mirror of
https://github.com/Combodo/iTop.git
synced 2026-03-28 12:24:11 +01:00
Compare commits
15 Commits
issue/7707
...
feature/79
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3ff97be963 | ||
|
|
add7743b6f | ||
|
|
2415d3d5d3 | ||
|
|
77989b6bd8 | ||
|
|
f26ed0ea71 | ||
|
|
309b6bd900 | ||
|
|
83f1476de4 | ||
|
|
c2d0c310a9 | ||
|
|
e7488b2c89 | ||
|
|
8ac4086e71 | ||
|
|
6b5273fa1c | ||
|
|
9b1e854bf7 | ||
|
|
926700856d | ||
|
|
ab93d59a77 | ||
|
|
c70d62a51e |
@@ -648,7 +648,7 @@ class UserRightsProfile extends UserRightsAddOnAPI
|
||||
$aConditions = array();
|
||||
|
||||
// Determine if this class is part of a silo and build the filter for it
|
||||
$sAttCode = self::GetOwnerOrganizationAttCode($sClass);
|
||||
$sAttCode = UserRights::GetOwnerOrganizationAttCode($sClass);
|
||||
if (!is_null($sAttCode))
|
||||
{
|
||||
$aUserOrgs = $this->GetUserOrgs($oUser, $sClass);
|
||||
@@ -834,7 +834,7 @@ class UserRightsProfile extends UserRightsAddOnAPI
|
||||
// But currently we are checking wether the objects might be written...
|
||||
// Let's exclude the objects based on the relevant criteria
|
||||
|
||||
$sOrgAttCode = self::GetOwnerOrganizationAttCode($sClass);
|
||||
$sOrgAttCode = UserRights::GetOwnerOrganizationAttCode($sClass);
|
||||
if (!is_null($sOrgAttCode))
|
||||
{
|
||||
$aUserOrgs = $this->GetUserOrgs($oUser, $sClass);
|
||||
@@ -938,31 +938,11 @@ 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)
|
||||
* @deprecated 3.3.0 use @UserRights::GetOwnerOrganizationAttCode instead
|
||||
*/
|
||||
public static function GetOwnerOrganizationAttCode($sClass)
|
||||
{
|
||||
$sAttCode = null;
|
||||
|
||||
$aCallSpec = array($sClass, 'MapContextParam');
|
||||
if (($sClass == 'Organization') || is_subclass_of($sClass, 'Organization'))
|
||||
{
|
||||
$sAttCode = 'id';
|
||||
}
|
||||
elseif (is_callable($aCallSpec))
|
||||
{
|
||||
$sAttCode = call_user_func($aCallSpec, 'org_id'); // Returns null when there is no mapping for this parameter
|
||||
if (!MetaModel::IsValidAttCode($sClass, $sAttCode))
|
||||
{
|
||||
// Skip silently. The data model checker will tell you something about this...
|
||||
$sAttCode = null;
|
||||
}
|
||||
}
|
||||
elseif(MetaModel::IsValidAttCode($sClass, 'org_id'))
|
||||
{
|
||||
$sAttCode = 'org_id';
|
||||
}
|
||||
|
||||
return $sAttCode;
|
||||
return UserRights::GetOwnerOrganizationAttCode($sClass);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -778,7 +778,7 @@ exit;
|
||||
|
||||
// Determine how to position the objects of this class
|
||||
//
|
||||
$sAttCode = self::GetOwnerOrganizationAttCode($sClass);
|
||||
$sAttCode = UserRights::GetOwnerOrganizationAttCode($sClass);
|
||||
if (is_null($sAttCode))
|
||||
{
|
||||
// No filtering for this object
|
||||
@@ -909,7 +909,7 @@ exit;
|
||||
// But currently we are checking wether the objects might be written...
|
||||
// Let's exclude the objects based on the relevant criteria
|
||||
|
||||
$sOrgAttCode = self::GetOwnerOrganizationAttCode($sClass);
|
||||
$sOrgAttCode = UserRights::GetOwnerOrganizationAttCode($sClass);
|
||||
if (!is_null($sOrgAttCode))
|
||||
{
|
||||
$aUserOrgs = $this->GetUserOrgs($oUser, $sClass);
|
||||
@@ -1015,28 +1015,7 @@ exit;
|
||||
*/
|
||||
public static function GetOwnerOrganizationAttCode($sClass)
|
||||
{
|
||||
$sAttCode = null;
|
||||
|
||||
$aCallSpec = array($sClass, 'MapContextParam');
|
||||
if (($sClass == 'Organization') || is_subclass_of($sClass, 'Organization'))
|
||||
{
|
||||
$sAttCode = 'id';
|
||||
}
|
||||
elseif (is_callable($aCallSpec))
|
||||
{
|
||||
$sAttCode = call_user_func($aCallSpec, 'org_id'); // Returns null when there is no mapping for this parameter
|
||||
if (!MetaModel::IsValidAttCode($sClass, $sAttCode))
|
||||
{
|
||||
// Skip silently. The data model checker will tell you something about this...
|
||||
$sAttCode = null;
|
||||
}
|
||||
}
|
||||
elseif(MetaModel::IsValidAttCode($sClass, 'org_id'))
|
||||
{
|
||||
$sAttCode = 'org_id';
|
||||
}
|
||||
|
||||
return $sAttCode;
|
||||
return UserRights::GetOwnerOrganizationAttCode($sClass);;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -71,7 +71,7 @@ define('DEFAULT_MAX_DISPLAY_LIMIT', 30);
|
||||
define('DEFAULT_STANDARD_RELOAD_INTERVAL', 5 * 60);
|
||||
define('DEFAULT_FAST_RELOAD_INTERVAL', 1 * 60);
|
||||
define('DEFAULT_SECURE_CONNECTION_REQUIRED', false);
|
||||
define('DEFAULT_ALLOWED_LOGIN_TYPES', 'form|external|basic');
|
||||
define('DEFAULT_ALLOWED_LOGIN_TYPES', 'form|external|basic|token');
|
||||
define('DEFAULT_EXT_AUTH_VARIABLE', '$_SERVER[\'REMOTE_USER\']');
|
||||
define('DEFAULT_ENCRYPTION_KEY', '@iT0pEncr1pti0n!'); // We'll use a random generated key later (if possible)
|
||||
define('DEFAULT_ENCRYPTION_LIB', 'Mcrypt'); // We'll define the best encryption available later
|
||||
|
||||
@@ -140,36 +140,21 @@ class InlineImage extends DBObject
|
||||
*/
|
||||
public function SetDefaultOrgId()
|
||||
{
|
||||
// First check that the organization CAN be fetched from the target class
|
||||
//
|
||||
$sClass = $this->Get('item_class');
|
||||
$aCallSpec = array($sClass, 'MapContextParam');
|
||||
if (is_callable($aCallSpec))
|
||||
{
|
||||
$sAttCode = call_user_func($aCallSpec, 'org_id'); // Returns null when there is no mapping for this parameter
|
||||
if (MetaModel::IsValidAttCode($sClass, $sAttCode))
|
||||
{
|
||||
// Second: check that the organization CAN be fetched from the current user
|
||||
//
|
||||
if (MetaModel::IsValidClass('Person'))
|
||||
{
|
||||
$aCallSpec = array($sClass, 'MapContextParam');
|
||||
if (is_callable($aCallSpec))
|
||||
{
|
||||
$sAttCode = call_user_func($aCallSpec, 'org_id'); // Returns null when there is no mapping for this parameter
|
||||
if (MetaModel::IsValidAttCode($sClass, $sAttCode))
|
||||
{
|
||||
// OK - try it
|
||||
//
|
||||
$oCurrentPerson = MetaModel::GetObject('Person', UserRights::GetContactId(), false);
|
||||
if ($oCurrentPerson)
|
||||
{
|
||||
$this->Set('item_org_id', $oCurrentPerson->Get($sAttCode));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// If the item class has no organization attribute, then no need to set the organization id
|
||||
if (is_null(UserRights::GetOwnerOrganizationAttCode( $this->Get('item_class')))) {
|
||||
// No need for silos
|
||||
return;
|
||||
}
|
||||
// get organization attribute code for the person class
|
||||
$sOrgAttrCodeForPerson = UserRights::GetOwnerOrganizationAttCode('Person');
|
||||
if (is_null($sOrgAttrCodeForPerson)) {
|
||||
// No need for silos
|
||||
return;
|
||||
}
|
||||
|
||||
$oCurrentPerson = MetaModel::GetObject('Person', UserRights::GetContactId(), false);
|
||||
if ($oCurrentPerson) {
|
||||
$this->Set('item_org_id', $oCurrentPerson->Get($sOrgAttrCodeForPerson));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2033,6 +2033,36 @@ class UserRights
|
||||
{
|
||||
return self::$m_sLastLoginStatus;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @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)
|
||||
* @since 3.3.0
|
||||
*/
|
||||
public static function GetOwnerOrganizationAttCode($sClass)
|
||||
{
|
||||
$sAttCode = null;
|
||||
|
||||
$aCallSpec = array($sClass, 'MapContextParam');
|
||||
if (($sClass == 'Organization') || is_subclass_of($sClass, 'Organization')) {
|
||||
$sAttCode = 'id';
|
||||
}
|
||||
elseif (is_callable($aCallSpec)) {
|
||||
$sAttCode = call_user_func($aCallSpec, 'org_id'); // Returns null when there is no mapping for this parameter
|
||||
if (!MetaModel::IsValidAttCode($sClass, $sAttCode)) {
|
||||
// Skip silently. The data model checker will tell you something about this...
|
||||
$sAttCode = null;
|
||||
}
|
||||
}
|
||||
elseif(MetaModel::IsValidAttCode($sClass, 'org_id')) {
|
||||
$sAttCode = 'org_id';
|
||||
}
|
||||
|
||||
return $sAttCode;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
|
||||
/* Semantic palettes */
|
||||
/* - Primary color of the brand */
|
||||
$common-color-primary-100: $common-color-blue-100 !default;
|
||||
$common-color-primary-200: $common-color-blue-200 !default;
|
||||
$common-color-primary-300: $common-color-blue-300 !default;
|
||||
$common-color-primary-400: $common-color-blue-400 !default;
|
||||
$common-color-primary-500: $common-color-blue-500 !default;
|
||||
$common-color-primary-600: $common-color-blue-600 !default;
|
||||
$common-color-primary-700: $common-color-blue-700 !default;
|
||||
$common-color-primary-800: $common-color-blue-800 !default;
|
||||
$common-color-primary-900: $common-color-blue-900 !default;
|
||||
$common-color-primary-950: $common-color-blue-950 !default;
|
||||
$common-color-primary-100: $common-color-orange-100 !default;
|
||||
$common-color-primary-200: $common-color-orange-200 !default;
|
||||
$common-color-primary-300: $common-color-orange-300 !default;
|
||||
$common-color-primary-400: $common-color-orange-400 !default;
|
||||
$common-color-primary-500: $common-color-orange-500 !default;
|
||||
$common-color-primary-600: $common-color-orange-600 !default;
|
||||
$common-color-primary-700: $common-color-orange-700 !default;
|
||||
$common-color-primary-800: $common-color-orange-800 !default;
|
||||
$common-color-primary-900: $common-color-orange-900 !default;
|
||||
$common-color-primary-950: $common-color-orange-950 !default;
|
||||
|
||||
/* - Secondary color of the brand */
|
||||
$common-color-secondary-100: $common-color-grey-100 !default;
|
||||
|
||||
@@ -37,6 +37,6 @@
|
||||
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:UserLDAP' => 'LDAP user',
|
||||
'Class:UserLDAP+' => 'User authentified by LDAP',
|
||||
'Class:UserLDAP+' => 'User authenticated by LDAP',
|
||||
'UserLDAP:server' => 'LDAP specifics',
|
||||
));
|
||||
|
||||
@@ -11,6 +11,6 @@
|
||||
*/
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Class:UserLDAP' => 'LDAP užívateľ',
|
||||
'Class:UserLDAP+' => 'User authentified by LDAP~~',
|
||||
'Class:UserLDAP+' => 'User authenticated by LDAP~~',
|
||||
'UserLDAP:server' => 'LDAP specifics~~',
|
||||
]);
|
||||
|
||||
@@ -17,7 +17,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'DBAnalyzer-Integrity-InvalidValue' => 'Invalid value for %1$s (column: `%2$s.%3$s`)~~',
|
||||
'DBAnalyzer-Integrity-MissingExtKey' => 'Missing external key %1$s (column: `%2$s.%3$s`)~~',
|
||||
'DBAnalyzer-Integrity-OrphanRecord' => 'Orphan record in `%1$s`, it should have its counterpart in table `%2$s`~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contains a valid class~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contain a valid class~~',
|
||||
'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Some user accounts have no profile at all~~',
|
||||
'DBTools:Analyze' => 'Analyzuj',
|
||||
'DBTools:Base' => 'Base~~',
|
||||
@@ -41,7 +41,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'DBTools:LostAttachments:Button:Busy' => 'Please wait...~~',
|
||||
'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: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:Disclaimer' => 'Here you can search your database for lost or misplaced attachments. This is NOT a data recovery tool, it does not retrieve deleted data.~~',
|
||||
'DBTools:LostAttachments:History' => 'Attachment "%1$s" restored with DB tools~~',
|
||||
'DBTools:LostAttachments:Step:Analyze' => 'First, search for lost/misplaced attachments by analyzing the database.~~',
|
||||
'DBTools:LostAttachments:Step:AnalyzeResults' => 'Analyze results:~~',
|
||||
|
||||
@@ -17,7 +17,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'DBAnalyzer-Integrity-InvalidValue' => 'Invalid value for %1$s (column: `%2$s.%3$s`)~~',
|
||||
'DBAnalyzer-Integrity-MissingExtKey' => 'Missing external key %1$s (column: `%2$s.%3$s`)~~',
|
||||
'DBAnalyzer-Integrity-OrphanRecord' => 'Orphan record in `%1$s`, it should have its counterpart in table `%2$s`~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contains a valid class~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contain a valid class~~',
|
||||
'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Some user accounts have no profile at all~~',
|
||||
'DBTools:Analyze' => 'Analyze~~',
|
||||
'DBTools:Base' => 'Base~~',
|
||||
@@ -41,7 +41,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'DBTools:LostAttachments:Button:Busy' => 'Please wait...~~',
|
||||
'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: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:Disclaimer' => 'Here you can search your database for lost or misplaced attachments. This is NOT a data recovery tool, it does not retrieve deleted data.~~',
|
||||
'DBTools:LostAttachments:History' => 'Attachment "%1$s" restored with DB tools~~',
|
||||
'DBTools:LostAttachments:Step:Analyze' => 'First, search for lost/misplaced attachments by analyzing the database.~~',
|
||||
'DBTools:LostAttachments:Step:AnalyzeResults' => 'Analyze results:~~',
|
||||
|
||||
@@ -59,7 +59,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'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',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contain a valid class',
|
||||
));
|
||||
|
||||
// Database Info
|
||||
@@ -72,7 +72,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
// Lost attachments
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'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:Disclaimer' => 'Here you can search your database for lost or misplaced attachments. This is NOT a data recovery tool, it does not retrieve deleted data.',
|
||||
|
||||
'DBTools:LostAttachments:Button:Analyze' => 'Analyze',
|
||||
'DBTools:LostAttachments:Button:Restore' => 'Restore',
|
||||
|
||||
@@ -17,7 +17,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'DBAnalyzer-Integrity-InvalidValue' => 'Invalid value for %1$s (column: `%2$s.%3$s`)~~',
|
||||
'DBAnalyzer-Integrity-MissingExtKey' => 'Missing external key %1$s (column: `%2$s.%3$s`)~~',
|
||||
'DBAnalyzer-Integrity-OrphanRecord' => 'Orphan record in `%1$s`, it should have its counterpart in table `%2$s`~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contains a valid class~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contain a valid class~~',
|
||||
'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Some user accounts have no profile at all~~',
|
||||
'DBTools:Analyze' => 'Analyze~~',
|
||||
'DBTools:Base' => 'Base~~',
|
||||
@@ -41,7 +41,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'DBTools:LostAttachments:Button:Busy' => 'Please wait...~~',
|
||||
'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: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:Disclaimer' => 'Here you can search your database for lost or misplaced attachments. This is NOT a data recovery tool, it does not retrieve deleted data.~~',
|
||||
'DBTools:LostAttachments:History' => 'Attachment "%1$s" restored with DB tools~~',
|
||||
'DBTools:LostAttachments:Step:Analyze' => 'First, search for lost/misplaced attachments by analyzing the database.~~',
|
||||
'DBTools:LostAttachments:Step:AnalyzeResults' => 'Analyze results:~~',
|
||||
|
||||
@@ -18,7 +18,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'DBAnalyzer-Integrity-InvalidValue' => 'Недопустимое значение для %1$s (столбец: `%2$s.%3$s`)',
|
||||
'DBAnalyzer-Integrity-MissingExtKey' => 'Отсутствует внешний ключ %1$s (столбец: `%2$s.%3$s`)',
|
||||
'DBAnalyzer-Integrity-OrphanRecord' => 'Сиротская запись в `%1$s`, она должна иметь свой аналог в таблице `%2$s`',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contains a valid class~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contain a valid class~~',
|
||||
'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Некоторые учетные записи пользователей не имеют профилей',
|
||||
'DBTools:Analyze' => 'Анализировать',
|
||||
'DBTools:Base' => 'База',
|
||||
|
||||
@@ -17,7 +17,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'DBAnalyzer-Integrity-InvalidValue' => 'Invalid value for %1$s (column: `%2$s.%3$s`)~~',
|
||||
'DBAnalyzer-Integrity-MissingExtKey' => 'Missing external key %1$s (column: `%2$s.%3$s`)~~',
|
||||
'DBAnalyzer-Integrity-OrphanRecord' => 'Orphan record in `%1$s`, it should have its counterpart in table `%2$s`~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contains a valid class~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contain a valid class~~',
|
||||
'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Some user accounts have no profile at all~~',
|
||||
'DBTools:Analyze' => 'Analyze~~',
|
||||
'DBTools:Base' => 'Base~~',
|
||||
@@ -41,7 +41,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'DBTools:LostAttachments:Button:Busy' => 'Please wait...~~',
|
||||
'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: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:Disclaimer' => 'Here you can search your database for lost or misplaced attachments. This is NOT a data recovery tool, it does not retrieve deleted data.~~',
|
||||
'DBTools:LostAttachments:History' => 'Attachment "%1$s" restored with DB tools~~',
|
||||
'DBTools:LostAttachments:Step:Analyze' => 'First, search for lost/misplaced attachments by analyzing the database.~~',
|
||||
'DBTools:LostAttachments:Step:AnalyzeResults' => 'Analyze results:~~',
|
||||
|
||||
@@ -17,7 +17,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'DBAnalyzer-Integrity-InvalidValue' => 'Invalid value for %1$s (column: `%2$s.%3$s`)~~',
|
||||
'DBAnalyzer-Integrity-MissingExtKey' => 'Missing external key %1$s (column: `%2$s.%3$s`)~~',
|
||||
'DBAnalyzer-Integrity-OrphanRecord' => 'Orphan record in `%1$s`, it should have its counterpart in table `%2$s`~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contains a valid class~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contain a valid class~~',
|
||||
'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Some user accounts have no profile at all~~',
|
||||
'DBTools:Analyze' => 'Analyze~~',
|
||||
'DBTools:Base' => 'Base~~',
|
||||
@@ -41,7 +41,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'DBTools:LostAttachments:Button:Busy' => 'Please wait...~~',
|
||||
'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: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:Disclaimer' => 'Here you can search your database for lost or misplaced attachments. This is NOT a data recovery tool, it does not retrieve deleted data.~~',
|
||||
'DBTools:LostAttachments:History' => 'Attachment "%1$s" restored with DB tools~~',
|
||||
'DBTools:LostAttachments:Step:Analyze' => 'First, search for lost/misplaced attachments by analyzing the database.~~',
|
||||
'DBTools:LostAttachments:Step:AnalyzeResults' => 'Analyze results:~~',
|
||||
|
||||
@@ -160,26 +160,20 @@
|
||||
$this->Set('item_class', $sClass);
|
||||
$this->Set('item_id', $iItemId);
|
||||
|
||||
$aCallSpec = array($sClass, 'MapContextParam');
|
||||
if (is_callable($aCallSpec))
|
||||
{
|
||||
$sAttCode = call_user_func($aCallSpec, 'org_id'); // Returns null when there is no mapping for this parameter
|
||||
if (MetaModel::IsValidAttCode($sClass, $sAttCode))
|
||||
{
|
||||
$iOrgId = $oItem->Get($sAttCode);
|
||||
if ($iOrgId > 0)
|
||||
{
|
||||
if ($iOrgId != $this->Get('item_org_id'))
|
||||
{
|
||||
$this->Set('item_org_id', $iOrgId);
|
||||
if ($bUpdateOnChange)
|
||||
{
|
||||
$this->DBUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$sAttCode = UserRights::GetOwnerOrganizationAttCode( $sClass);
|
||||
if (is_null($sAttCode)) {
|
||||
// No need for silos
|
||||
return;
|
||||
}
|
||||
$iOrgId = $oItem->Get($sAttCode);
|
||||
if ($iOrgId > 0) {
|
||||
if ($iOrgId != $this->Get('item_org_id')) {
|
||||
$this->Set('item_org_id', $iOrgId);
|
||||
if ($bUpdateOnChange) {
|
||||
$this->DBUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}]]></code>
|
||||
</method>
|
||||
<method id="SetDefaultOrgId">
|
||||
@@ -193,24 +187,15 @@
|
||||
<code><![CDATA[ public function SetDefaultOrgId()
|
||||
{
|
||||
// Check that the organization CAN be fetched from the current user
|
||||
//
|
||||
if (MetaModel::IsValidClass('Person'))
|
||||
{
|
||||
$aCallSpec = array('Person', 'MapContextParam');
|
||||
if (is_callable($aCallSpec))
|
||||
{
|
||||
$sAttCode = call_user_func($aCallSpec, 'org_id'); // Returns null when there is no mapping for this parameter
|
||||
if (MetaModel::IsValidAttCode('Person', $sAttCode))
|
||||
{
|
||||
// OK - try it
|
||||
//
|
||||
$oCurrentPerson = MetaModel::GetObject('Person', UserRights::GetContactId(), false);
|
||||
if ($oCurrentPerson)
|
||||
{
|
||||
$this->Set('item_org_id', $oCurrentPerson->Get($sAttCode));
|
||||
}
|
||||
}
|
||||
}
|
||||
$sOrgAttrCodeForPerson = UserRights::GetOwnerOrganizationAttCode('Person');
|
||||
if (is_null($sOrgAttrCodeForPerson)) {
|
||||
// No need for silos
|
||||
return;
|
||||
}
|
||||
|
||||
$oCurrentPerson = MetaModel::GetObject('Person', UserRights::GetContactId(), false);
|
||||
if ($oCurrentPerson) {
|
||||
$this->Set('item_org_id', $oCurrentPerson->Get($sOrgAttrCodeForPerson));
|
||||
}
|
||||
}]]></code>
|
||||
</method>
|
||||
|
||||
@@ -643,7 +643,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'Class:Subnet/Tab:FreeIPs-count' => 'Počet volných adres: %1$s',
|
||||
'Class:Subnet/Tab:FreeIPs-explain' => 'Tady je výčet volných IP adres (10)',
|
||||
'Class:Subnet/Tab:IPUsage' => 'Využití IP',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet are used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet is used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => 'Rozhraní, která mají IP adresu v rozsahu: <em>%1$s</em>-<em>%2$s</em>',
|
||||
'Class:Tablet' => 'Tablet',
|
||||
'Class:Tablet+' => '',
|
||||
|
||||
@@ -153,7 +153,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Class:FunctionalCI/Attribute:organization_name' => 'Organisationsnavn',
|
||||
'Class:FunctionalCI/Attribute:organization_name+' => '',
|
||||
'Class:FunctionalCI/Attribute:softwares_list' => 'Software',
|
||||
'Class:FunctionalCI/Attribute:softwares_list+' => 'All the softwares installed on this configuration item~~',
|
||||
'Class:FunctionalCI/Attribute:softwares_list+' => 'All the software installed on this configuration item~~',
|
||||
'Class:FunctionalCI/Tab:OpenedTickets' => 'Active Tickets~~',
|
||||
'Class:FunctionalCI/Tab:OpenedTickets+' => 'Active Tickets which are impacting this functional CI~~',
|
||||
'Class:Group' => 'Gruppe',
|
||||
@@ -642,7 +642,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Class:Subnet/Tab:FreeIPs-count' => 'Ledige IP: %1$s',
|
||||
'Class:Subnet/Tab:FreeIPs-explain' => 'Her er et udtræk af 10 ledige IP adresser',
|
||||
'Class:Subnet/Tab:IPUsage' => 'IP Brug',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet are used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet is used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces der har en IP i området: <em>%1$s</em> til <em>%2$s</em>',
|
||||
'Class:Tablet' => 'Tablet',
|
||||
'Class:Tablet+' => '',
|
||||
|
||||
@@ -129,7 +129,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:FunctionalCI/Attribute:applicationsolution_list' => 'Application solutions',
|
||||
'Class:FunctionalCI/Attribute:applicationsolution_list+' => 'All the application solutions depending on this configuration item',
|
||||
'Class:FunctionalCI/Attribute:softwares_list' => 'Softwares',
|
||||
'Class:FunctionalCI/Attribute:softwares_list+' => 'All the softwares installed on this configuration item',
|
||||
'Class:FunctionalCI/Attribute:softwares_list+' => 'All the software installed on this configuration item',
|
||||
'Class:FunctionalCI/Attribute:finalclass' => 'CI sub-class',
|
||||
'Class:FunctionalCI/Attribute:finalclass+' => 'Name of the final class',
|
||||
'Class:FunctionalCI/Tab:OpenedTickets' => 'Active Tickets',
|
||||
@@ -1557,7 +1557,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Server:otherinfo' => 'Other information',
|
||||
'Server:power' => 'Power supply',
|
||||
'Class:Subnet/Tab:IPUsage' => 'IP Usage',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet are used or not',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet is used or not',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces having an IP in the range: <em>%1$s</em> to <em>%2$s</em>',
|
||||
'Class:Subnet/Tab:FreeIPs' => 'Free IPs',
|
||||
'Class:Subnet/Tab:FreeIPs-count' => 'Free IPs: %1$s',
|
||||
|
||||
@@ -641,7 +641,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Class:Subnet/Tab:FreeIPs-count' => 'Szabad IP címek: %1$s',
|
||||
'Class:Subnet/Tab:FreeIPs-explain' => '10 szabad IP cím kivonata',
|
||||
'Class:Subnet/Tab:IPUsage' => 'IP felhasználás',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet are used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet is used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => 'A hálózati csatolók a következő tartományba esnek: <em>%1$s</em> - <em>%2$s</em>',
|
||||
'Class:Tablet' => 'Táblagép',
|
||||
'Class:Tablet+' => '~~',
|
||||
|
||||
@@ -152,7 +152,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Class:FunctionalCI/Attribute:organization_name' => '組織名',
|
||||
'Class:FunctionalCI/Attribute:organization_name+' => '共通名',
|
||||
'Class:FunctionalCI/Attribute:softwares_list' => 'ソフトウエア',
|
||||
'Class:FunctionalCI/Attribute:softwares_list+' => 'All the softwares installed on this configuration item~~',
|
||||
'Class:FunctionalCI/Attribute:softwares_list+' => 'All the software installed on this configuration item~~',
|
||||
'Class:FunctionalCI/Tab:OpenedTickets' => 'Active Tickets~~',
|
||||
'Class:FunctionalCI/Tab:OpenedTickets+' => 'Active Tickets which are impacting this functional CI~~',
|
||||
'Class:Group' => 'グループ',
|
||||
@@ -641,7 +641,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Class:Subnet/Tab:FreeIPs-count' => 'フリーIP: %1$s',
|
||||
'Class:Subnet/Tab:FreeIPs-explain' => '10個のフリーなIPアドレス',
|
||||
'Class:Subnet/Tab:IPUsage' => 'IP 利用',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet are used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet is used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => 'インターフェースは、レンジ: <em>%1$s</em> から <em>%2$s</em>の中のIPを持っています。',
|
||||
'Class:Tablet' => 'タブレット',
|
||||
'Class:Tablet+' => '',
|
||||
|
||||
@@ -641,7 +641,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Class:Subnet/Tab:FreeIPs-count' => 'IPs livres: %1$s',
|
||||
'Class:Subnet/Tab:FreeIPs-explain' => 'Aqui uma faixa de 10 endereços IPs livres',
|
||||
'Class:Subnet/Tab:IPUsage' => 'IP usado',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet are used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet is used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => 'Placas de rede contendo IP na faixa: <em>%1$s</em> para <em>%2$s</em>',
|
||||
'Class:Tablet' => 'Tablet',
|
||||
'Class:Tablet+' => '',
|
||||
|
||||
@@ -642,7 +642,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Class:Subnet/Tab:FreeIPs-count' => 'Свободных IP-адресов: %1$s',
|
||||
'Class:Subnet/Tab:FreeIPs-explain' => 'Вот выборка из 10 свободных IP-адресов',
|
||||
'Class:Subnet/Tab:IPUsage' => 'Использование IP-адресов',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet are used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet is used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => 'Интерфейсы с IP-адресом в диапазоне: <em>%1$s</em> - <em>%2$s</em>',
|
||||
'Class:Tablet' => 'Планшет',
|
||||
'Class:Tablet+' => '',
|
||||
|
||||
@@ -152,7 +152,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Class:FunctionalCI/Attribute:organization_name' => 'Názov Organizácie',
|
||||
'Class:FunctionalCI/Attribute:organization_name+' => 'Common name~~',
|
||||
'Class:FunctionalCI/Attribute:softwares_list' => 'Softvér',
|
||||
'Class:FunctionalCI/Attribute:softwares_list+' => 'All the softwares installed on this configuration item~~',
|
||||
'Class:FunctionalCI/Attribute:softwares_list+' => 'All the software installed on this configuration item~~',
|
||||
'Class:FunctionalCI/Tab:OpenedTickets' => 'Active Tickets~~',
|
||||
'Class:FunctionalCI/Tab:OpenedTickets+' => 'Active Tickets which are impacting this functional CI~~',
|
||||
'Class:Group' => 'Skupina',
|
||||
@@ -641,7 +641,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Class:Subnet/Tab:FreeIPs-count' => 'Voľných IP adries: %1$s',
|
||||
'Class:Subnet/Tab:FreeIPs-explain' => 'Tu je extrakt 10 voľných IP adries',
|
||||
'Class:Subnet/Tab:IPUsage' => 'Využívanosť IP adries',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet are used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet is used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => 'Rozhrania majúce IP adresu v rozsahu: <em>%1$s</em> do <em>%2$s</em>',
|
||||
'Class:Tablet' => 'Tablet',
|
||||
'Class:Tablet+' => '~~',
|
||||
|
||||
@@ -642,7 +642,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Class:Subnet/Tab:FreeIPs-count' => 'Boş IPler: %1$s',
|
||||
'Class:Subnet/Tab:FreeIPs-explain' => 'Boş IP adresleri',
|
||||
'Class:Subnet/Tab:IPUsage' => 'IP Kullanımı',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet are used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet is used or not~~',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => '<em>%1$s</em> - <em>%2$s</em> aralığındaki IPye sahip arayüzler',
|
||||
'Class:Tablet' => 'Tablet',
|
||||
'Class:Tablet+' => '~~',
|
||||
|
||||
@@ -207,9 +207,9 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:Incident/Attribute:user_satisfaction+' => '',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:1' => 'Very satisfied',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:1+' => '',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:2' => 'Fairly statisfied',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:2' => 'Fairly satisfied',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:2+' => '',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:3' => 'Rather Dissatified',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:3' => 'Rather dissatisfied',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:3+' => '',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:4' => 'Very Dissatisfied',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:4+' => '',
|
||||
|
||||
@@ -160,9 +160,9 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Class:Incident/Attribute:user_satisfaction+' => '~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:1' => 'Very satisfied~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:1+' => '~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:2' => 'Fairly statisfied~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:2' => 'Fairly satisfied~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:2+' => '~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:3' => 'Rather Dissatified~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:3' => 'Rather dissatisfied~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:3+' => '~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:4' => 'Very Dissatisfied~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:4+' => '~~',
|
||||
|
||||
@@ -160,9 +160,9 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Class:Incident/Attribute:user_satisfaction+' => '~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:1' => 'Very satisfied~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:1+' => '',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:2' => 'Fairly statisfied~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:2' => 'Fairly satisfied~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:2+' => '',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:3' => 'Rather Dissatified~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:3' => 'Rather dissatisfied~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:3+' => '',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:4' => 'Very Dissatisfied~~',
|
||||
'Class:Incident/Attribute:user_satisfaction/Value:4+' => '',
|
||||
|
||||
@@ -42,7 +42,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClient/Attribute:token_expiration+' => '~~',
|
||||
'Class:OAuthClientAzure' => 'OAuth client for Microsoft Azure~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -64,7 +64,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)~~',
|
||||
'Class:OAuthClientGoogle' => 'OAuth client for Google~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -87,12 +87,12 @@ Erase the field to recalculate default value~~',
|
||||
'Menu:OAuthClient' => 'OAuth client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already been used for OAuth Client~~',
|
||||
'OAuthClient:baseinfo' => 'Base Information~~',
|
||||
'OAuthClient:scope' => 'Scope~~',
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
'itop-oauth-client:Message:MissingToken' => 'Generate access token before using this OAuth client~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to to take into account the changes~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to take into account the changes~~',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Access token created~~',
|
||||
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error~~',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated~~',
|
||||
|
||||
@@ -42,7 +42,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClient/Attribute:token_expiration+' => '~~',
|
||||
'Class:OAuthClientAzure' => 'OAuth client for Microsoft Azure~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -64,7 +64,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)~~',
|
||||
'Class:OAuthClientGoogle' => 'OAuth client for Google~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -87,12 +87,12 @@ Erase the field to recalculate default value~~',
|
||||
'Menu:OAuthClient' => 'OAuth client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already been used for OAuth Client~~',
|
||||
'OAuthClient:baseinfo' => 'Base Information~~',
|
||||
'OAuthClient:scope' => 'Scope~~',
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
'itop-oauth-client:Message:MissingToken' => 'Generate access token before using this OAuth client~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to to take into account the changes~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to take into account the changes~~',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Access token created~~',
|
||||
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error~~',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated~~',
|
||||
|
||||
@@ -19,12 +19,12 @@ Dict::Add('EN US', 'English', 'English', [
|
||||
'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:RegenerateToken' => 'Regenerate access token to to take into account the changes',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to take into account the changes',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Access token created',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated',
|
||||
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error',
|
||||
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already been used for OAuth Client',
|
||||
|
||||
'OAuthClient:baseinfo' => 'Base Information',
|
||||
'OAuthClient:scope' => 'Scope',
|
||||
@@ -82,7 +82,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP',
|
||||
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP+' => '',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored',
|
||||
'Class:OAuthClientAzure/Attribute:used_scope' => 'Used scope',
|
||||
'Class:OAuthClientAzure/Attribute:used_scope+' => '',
|
||||
'Class:OAuthClientAzure/Attribute:used_scope/Value:simple' => 'Simple',
|
||||
@@ -111,7 +111,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP',
|
||||
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP+' => '',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored',
|
||||
'Class:OAuthClientGoogle/Attribute:used_scope' => 'Used scope',
|
||||
'Class:OAuthClientGoogle/Attribute:used_scope+' => '',
|
||||
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple' => 'Simple',
|
||||
|
||||
@@ -42,7 +42,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClient/Attribute:token_expiration+' => '~~',
|
||||
'Class:OAuthClientAzure' => 'OAuth ügyfél Microsoft Azure-hoz',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -64,7 +64,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)',
|
||||
'Class:OAuthClientGoogle' => 'OAuth ügyfél a Google-höz',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -87,12 +87,12 @@ Erase the field to recalculate default value~~',
|
||||
'Menu:OAuthClient' => 'OAuth ügyfél',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:RegenerateTokens' => 'Hozzáférési tokenek újragenerálása...',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already been used for OAuth Client~~',
|
||||
'OAuthClient:baseinfo' => 'Base Information~~',
|
||||
'OAuthClient:scope' => 'Scope~~',
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Postafiók létrehozás',
|
||||
'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:RegenerateToken' => 'Regenerate access token to to take into account the changes~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to take into account the changes~~',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Hozzáférési token kész',
|
||||
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error~~',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Hozzáférési token újragenerálva',
|
||||
|
||||
@@ -42,7 +42,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClient/Attribute:token_expiration+' => '~~',
|
||||
'Class:OAuthClientAzure' => 'OAuth client for Microsoft Azure~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -64,7 +64,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)~~',
|
||||
'Class:OAuthClientGoogle' => 'OAuth client for Google~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -87,12 +87,12 @@ Erase the field to recalculate default value~~',
|
||||
'Menu:OAuthClient' => 'OAuth client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already been used for OAuth Client~~',
|
||||
'OAuthClient:baseinfo' => 'Base Information~~',
|
||||
'OAuthClient:scope' => 'Scope~~',
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
'itop-oauth-client:Message:MissingToken' => 'Generate access token before using this OAuth client~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to to take into account the changes~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to take into account the changes~~',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Access token created~~',
|
||||
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error~~',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated~~',
|
||||
|
||||
@@ -43,7 +43,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClient/Attribute:token_expiration+' => '',
|
||||
'Class:OAuthClientAzure' => 'OAuth client for Microsoft Azure~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP',
|
||||
@@ -65,7 +65,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)',
|
||||
'Class:OAuthClientGoogle' => 'OAuth client for Google~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP',
|
||||
@@ -88,12 +88,12 @@ Erase the field to recalculate default value~~',
|
||||
'Menu:OAuthClient' => 'OAuth client~~',
|
||||
'Menu:OAuthClient+' => '',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already been used for OAuth Client~~',
|
||||
'OAuthClient:baseinfo' => 'Base Information~~',
|
||||
'OAuthClient:scope' => 'Scope~~',
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
'itop-oauth-client:Message:MissingToken' => 'Generate access token before using this OAuth client~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to to take into account the changes~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to take into account the changes~~',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Access token created~~',
|
||||
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error~~',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated~~',
|
||||
|
||||
@@ -42,7 +42,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClient/Attribute:token_expiration+' => '~~',
|
||||
'Class:OAuthClientAzure' => 'OAuth client for Microsoft Azure~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -64,7 +64,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)~~',
|
||||
'Class:OAuthClientGoogle' => 'OAuth client for Google~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -87,12 +87,12 @@ Erase the field to recalculate default value~~',
|
||||
'Menu:OAuthClient' => 'OAuth client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already been used for OAuth Client~~',
|
||||
'OAuthClient:baseinfo' => 'Base Information~~',
|
||||
'OAuthClient:scope' => 'Scope~~',
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
'itop-oauth-client:Message:MissingToken' => 'Generate access token before using this OAuth client~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to to take into account the changes~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to take into account the changes~~',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Access token created~~',
|
||||
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error~~',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated~~',
|
||||
|
||||
@@ -42,7 +42,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClient/Attribute:token_expiration+' => '~~',
|
||||
'Class:OAuthClientAzure' => 'OAuth client for Microsoft Azure~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -64,7 +64,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)~~',
|
||||
'Class:OAuthClientGoogle' => 'OAuth client for Google~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -87,12 +87,12 @@ Erase the field to recalculate default value~~',
|
||||
'Menu:OAuthClient' => 'OAuth client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already been used for OAuth Client~~',
|
||||
'OAuthClient:baseinfo' => 'Base Information~~',
|
||||
'OAuthClient:scope' => 'Scope~~',
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
'itop-oauth-client:Message:MissingToken' => 'Generate access token before using this OAuth client~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to to take into account the changes~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to take into account the changes~~',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Access token created~~',
|
||||
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error~~',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated~~',
|
||||
|
||||
@@ -40,7 +40,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClient/Attribute:token_expiration+' => '~~',
|
||||
'Class:OAuthClientAzure' => 'OAuth client for Microsoft Azure~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -62,7 +62,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)~~',
|
||||
'Class:OAuthClientGoogle' => 'OAuth client for Google~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -85,12 +85,12 @@ Erase the field to recalculate default value~~',
|
||||
'Menu:OAuthClient' => 'OAuth client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already been used for OAuth Client~~',
|
||||
'OAuthClient:baseinfo' => 'Base Information~~',
|
||||
'OAuthClient:scope' => 'Scope~~',
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
'itop-oauth-client:Message:MissingToken' => 'Generate access token before using this OAuth client~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to to take into account the changes~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to take into account the changes~~',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Access token created~~',
|
||||
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error~~',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated~~',
|
||||
|
||||
@@ -42,7 +42,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClient/Attribute:token_expiration+' => '~~',
|
||||
'Class:OAuthClientAzure' => 'OAuth client for Microsoft Azure~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -64,7 +64,7 @@ Erase the field to recalculate default value~~',
|
||||
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)~~',
|
||||
'Class:OAuthClientGoogle' => 'OAuth client for Google~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence over the “Scope” selection which is then ignored~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope+' => 'Usually default selection is appropriate~~',
|
||||
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP~~',
|
||||
@@ -87,12 +87,12 @@ Erase the field to recalculate default value~~',
|
||||
'Menu:OAuthClient' => 'OAuth client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client~~',
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already been used for OAuth Client~~',
|
||||
'OAuthClient:baseinfo' => 'Base Information~~',
|
||||
'OAuthClient:scope' => 'Scope~~',
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
'itop-oauth-client:Message:MissingToken' => 'Generate access token before using this OAuth client~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to to take into account the changes~~',
|
||||
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to take into account the changes~~',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Access token created~~',
|
||||
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error~~',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated~~',
|
||||
|
||||
@@ -67,7 +67,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'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:500' => 'Oops! An error has occurred.~~',
|
||||
'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~~',
|
||||
'Page:DefaultTitle' => '%1$s User portal~~',
|
||||
@@ -103,12 +103,12 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Portal:Datatables:Language:ZeroRecords' => 'No result~~',
|
||||
'Portal:EnvironmentBanner:GoToProduction' => 'Go back to PRODUCTION mode~~',
|
||||
'Portal:EnvironmentBanner:Title' => 'You are currently in <strong>%1$s</strong> mode~~',
|
||||
'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.~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:ErrorUserLoggedOut' => 'You are logged out and need to log in again in order to continue.~~',
|
||||
'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:File:None' => 'No file~~',
|
||||
'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:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
]);
|
||||
|
||||
@@ -37,7 +37,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'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:500' => 'Oops! An error has occurred.',
|
||||
'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.',
|
||||
@@ -67,9 +67,9 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
// Object form
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'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.',
|
||||
'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 this form again.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -103,12 +103,12 @@ Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'Portal:Datatables:Language:ZeroRecords' => 'Nessun Risultato',
|
||||
'Portal:EnvironmentBanner:GoToProduction' => 'Ritorna alla modalità Produzione',
|
||||
'Portal:EnvironmentBanner:Title' => 'Sei attualmente in modalità <strong>%1$s</strong>',
|
||||
'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.~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:ErrorUserLoggedOut' => 'Sei disconnesso, bisogna effettuare un nuovo accesso per continuare',
|
||||
'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:File:None' => 'Nessun File',
|
||||
'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:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
]);
|
||||
|
||||
@@ -67,7 +67,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'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:500' => 'Oops! An error has occurred.~~',
|
||||
'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~~',
|
||||
'Page:DefaultTitle' => '%1$s User portal~~',
|
||||
@@ -103,12 +103,12 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Portal:Datatables:Language:ZeroRecords' => 'No result~~',
|
||||
'Portal:EnvironmentBanner:GoToProduction' => 'Go back to PRODUCTION mode~~',
|
||||
'Portal:EnvironmentBanner:Title' => 'You are currently in <strong>%1$s</strong> mode~~',
|
||||
'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.~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:ErrorUserLoggedOut' => 'You are logged out and need to log in again in order to continue.~~',
|
||||
'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:File:None' => 'No file~~',
|
||||
'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:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
]);
|
||||
|
||||
@@ -104,8 +104,8 @@ Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Portal:Datatables:Language:ZeroRecords' => 'Нет записей',
|
||||
'Portal:EnvironmentBanner:GoToProduction' => 'Вернуться в режим PRODUCTION',
|
||||
'Portal:EnvironmentBanner:Title' => 'Вы находитесь в режиме <strong>%1$s</strong>',
|
||||
'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.~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:ErrorUserLoggedOut' => 'Вы вышли из системы. Выполните вход, чтобы продолжить работу.',
|
||||
'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">Открыть</a> / <a href="%4$s" class="file_download_link">Скачать</a>',
|
||||
|
||||
@@ -67,7 +67,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'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:500' => 'Oops! An error has occurred.~~',
|
||||
'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~~',
|
||||
'Page:DefaultTitle' => '%1$s User portal~~',
|
||||
@@ -103,12 +103,12 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Portal:Datatables:Language:ZeroRecords' => 'No result~~',
|
||||
'Portal:EnvironmentBanner:GoToProduction' => 'Go back to PRODUCTION mode~~',
|
||||
'Portal:EnvironmentBanner:Title' => 'You are currently in <strong>%1$s</strong> mode~~',
|
||||
'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.~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:ErrorUserLoggedOut' => 'You are logged out and need to log in again in order to continue.~~',
|
||||
'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:File:None' => 'No file~~',
|
||||
'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:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
]);
|
||||
|
||||
@@ -67,7 +67,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'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:500' => 'Oops! An error has occurred.~~',
|
||||
'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~~',
|
||||
'Page:DefaultTitle' => '%1$s User portal~~',
|
||||
@@ -103,12 +103,12 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Portal:Datatables:Language:ZeroRecords' => 'No result~~',
|
||||
'Portal:EnvironmentBanner:GoToProduction' => 'Go back to PRODUCTION mode~~',
|
||||
'Portal:EnvironmentBanner:Title' => 'You are currently in <strong>%1$s</strong> mode~~',
|
||||
'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.~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:ErrorUserLoggedOut' => 'You are logged out and need to log in again in order to continue.~~',
|
||||
'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:File:None' => 'No file~~',
|
||||
'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:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
]);
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -821,6 +821,23 @@ table .group-actions .item-action-wrapper .panel-body > p:last-child{
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* tree list filter data */
|
||||
.list-group-item .tree-item-wrapper .tree-item-filter-data{
|
||||
padding-top: 8px;
|
||||
color: $gray;
|
||||
font-size: .9em;
|
||||
}
|
||||
/* tree list filter data span items */
|
||||
.list-group-item .tree-item-wrapper .tree-item-filter-data span:not(:last-child):after{
|
||||
content: '●';
|
||||
margin: 0 5px;
|
||||
}
|
||||
/* tree list filter data label span items */
|
||||
.list-group-item .tree-item-wrapper .tree-item-filter-data .tree-item-filter-data-label{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
/* - Mosaic mode */
|
||||
/* */
|
||||
|
||||
@@ -6,6 +6,11 @@
|
||||
* Project Website: http://wiki.aiwsolutions.net/dOQKO
|
||||
**/
|
||||
|
||||
/**
|
||||
* Altered to allow filtering tree list with extra data.
|
||||
* Add an attribute data-tree-additional-search to tree-item-wrapper element with extra data you want the search to include.
|
||||
*/
|
||||
|
||||
jQuery.fn.treeListFilter = function(list, timeout, callback) {
|
||||
var list = jQuery(list);
|
||||
var input = this;
|
||||
@@ -41,6 +46,7 @@ jQuery.fn.treeListFilter = function(list, timeout, callback) {
|
||||
// Modified the search so it looks for each parts of the search and not the entire sentance
|
||||
// Modified the text to remove accents (latinise())
|
||||
var text = liObject.find('.tree-item-wrapper').text();
|
||||
text+= liObject.find('.tree-item-wrapper').attr('data-tree-additional-search');
|
||||
var textLC = text.toLowerCase().latinise();
|
||||
var filterValues = filterValue.split(' ');
|
||||
var display = true;
|
||||
|
||||
@@ -26,11 +26,13 @@ use AttributeImage;
|
||||
use AttributeSet;
|
||||
use AttributeTagSet;
|
||||
use Combodo\iTop\Portal\Brick\BrowseBrick;
|
||||
use DBObject;
|
||||
use DBSearch;
|
||||
use Dict;
|
||||
use MetaModel;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
use UserRights;
|
||||
use utils;
|
||||
|
||||
/**
|
||||
* Class BrowseBrickHelper
|
||||
@@ -514,6 +516,7 @@ class BrowseBrickHelper
|
||||
'name' => $aCurrentRowValues[0]->Get($aLevelsProperties[$aCurrentRowKeys[0]]['name_att']),
|
||||
'class' => get_class($aCurrentRowValues[0]),
|
||||
'subitems' => array(),
|
||||
'filter_data' => $this->GetFilterData($aLevelsProperties[$aCurrentRowKeys[0]], $aCurrentRowKeys[0], $aCurrentRowValues[0]),
|
||||
'action_rules_token' => $this->PrepareActionRulesForItems($aCurrentRowObjects, $aCurrentRowKeys[0], $aLevelsProperties),
|
||||
);
|
||||
|
||||
@@ -564,4 +567,49 @@ class BrowseBrickHelper
|
||||
$this->AddToTreeItems($aItems[$sCurrentIndex]['subitems'], $aCurrentRowSliced, $aLevelsProperties, $aCurrentRowObjects);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get data to allow filtering tree with invisible fields.
|
||||
*
|
||||
* @param array $aLevelProperties tree level properties
|
||||
* @param string $sRowKey row key
|
||||
* @param \DBObject $oRowValue row value
|
||||
*
|
||||
* @return string[]
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \Exception
|
||||
*/
|
||||
private function GetFilterData(array $aLevelProperties, string $sRowKey, DBObject $oRowValue) : array
|
||||
{
|
||||
// result
|
||||
$sValues = "";
|
||||
$sValuesAndCodes = "";
|
||||
|
||||
// iterate throw level properties fields...
|
||||
foreach ($aLevelProperties['fields'] as $aField) {
|
||||
|
||||
// retrieve the object class
|
||||
$sFieldObjectClass = get_class($oRowValue);
|
||||
|
||||
// retrieve the field object attribute definition
|
||||
$oAttDef = MetaModel::GetAttributeDef($sFieldObjectClass, $aField['code']);
|
||||
|
||||
// get field value (HTML representation)
|
||||
$sValue = $oAttDef->GetAsHTML($oRowValue->Get($aField['code']));
|
||||
|
||||
// do not print empty fields
|
||||
if(!utils::IsNullOrEmptyString($sValue)){
|
||||
|
||||
// append to result
|
||||
$sValues .= $sValue;
|
||||
$sValuesAndCodes .= '<span><span class="tree-item-filter-data-label">' . $aField['label'] . ':</span> ' . $sValue . '</span>';
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'values' => $sValues,
|
||||
'values_and_codes' => $sValuesAndCodes
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,6 +149,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
// hide/show tree items filter data when search input is empty/notEmpty
|
||||
$('.tree-item-filter-data').toggle($('#brick_search_field').val() !== '');
|
||||
|
||||
expandAll();
|
||||
};
|
||||
// Load current node childnodes throught AJAX
|
||||
@@ -197,10 +200,12 @@
|
||||
|
||||
var liElem = $('<li></li>').addClass('list-group-item');
|
||||
var spanElem = $('<span></span>').addClass('tree-item-wrapper').attr('data-item-id', item.id).attr('data-level-alias', item.level_alias);
|
||||
spanElem.attr('data-tree-additional-search', item['filter_data']['values']);
|
||||
var nameElem = $('<a></a>').addClass('tree-item').text(item.name);
|
||||
// Building node
|
||||
$('ul[data-level-id="'+nodeId+'"]').append(liElem);
|
||||
spanElem.append(nameElem);
|
||||
spanElem.append('<div class="tree-item-filter-data">' + item['filter_data']['values_and_codes'] + '</div>');
|
||||
liElem.append(spanElem);
|
||||
|
||||
// Delegating a click on <span> to its child <a> element
|
||||
|
||||
@@ -9,7 +9,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Menu:RequestManagement+' => '',
|
||||
'Menu:RequestManagementProvider' => 'Helpdesk provider',
|
||||
'Menu:RequestManagementProvider+' => '',
|
||||
'Menu:UserRequest:Provider' => 'Open request transfered to provider',
|
||||
'Menu:UserRequest:Provider' => 'Open request transferred to provider',
|
||||
'Menu:UserRequest:Provider+' => '',
|
||||
'Menu:UserRequest:Overview' => 'Overview',
|
||||
'Menu:UserRequest:Overview+' => '',
|
||||
@@ -215,9 +215,9 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:1+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:2' => 'Fairly satisfied',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:2+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3' => 'Rather dissatified',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3' => 'Rather dissatisfied',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4' => 'Very dissatified',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4' => 'Very dissatisfied',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4+' => '',
|
||||
'Class:UserRequest/Attribute:user_comment' => 'User comment',
|
||||
'Class:UserRequest/Attribute:user_comment+' => '',
|
||||
|
||||
@@ -176,9 +176,9 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:1+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:2' => 'Fairly satisfied~~',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:2+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3' => 'Rather dissatified~~',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3' => 'Rather dissatisfied~~',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4' => 'Very dissatified~~',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4' => 'Very dissatisfied~~',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4+' => '',
|
||||
'Class:UserRequest/Error:CannotAssignParentRequestIdToSelf' => 'Cannot assign the Parent request to the request itself~~',
|
||||
'Class:UserRequest/Method:ResolveChildTickets' => 'ResolveChildTickets~~',
|
||||
@@ -227,7 +227,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Menu:UserRequest:OpenRequests+' => '',
|
||||
'Menu:UserRequest:Overview' => 'Overview~~',
|
||||
'Menu:UserRequest:Overview+' => '',
|
||||
'Menu:UserRequest:Provider' => 'Open request transfered to provider~~',
|
||||
'Menu:UserRequest:Provider' => 'Open request transferred to provider~~',
|
||||
'Menu:UserRequest:Provider+' => '',
|
||||
'Menu:UserRequest:Shortcuts' => 'Shortcuts~~',
|
||||
'Menu:UserRequest:Shortcuts+' => '~~',
|
||||
|
||||
@@ -9,7 +9,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Menu:RequestManagement+' => '',
|
||||
'Menu:RequestManagementProvider' => 'Helpdesk provider',
|
||||
'Menu:RequestManagementProvider+' => '',
|
||||
'Menu:UserRequest:Provider' => 'Open requests transfered to provider',
|
||||
'Menu:UserRequest:Provider' => 'Open requests transferred to provider',
|
||||
'Menu:UserRequest:Provider+' => '',
|
||||
'Menu:UserRequest:Overview' => 'Overview',
|
||||
'Menu:UserRequest:Overview+' => '',
|
||||
@@ -217,9 +217,9 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:1+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:2' => 'Fairly satisfied',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:2+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3' => 'Rather dissatified',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3' => 'Rather dissatisfied',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4' => 'Very dissatified',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4' => 'Very dissatisfied',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4+' => '',
|
||||
'Class:UserRequest/Attribute:user_comment' => 'User comment',
|
||||
'Class:UserRequest/Attribute:user_comment+' => '',
|
||||
|
||||
@@ -175,9 +175,9 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:1+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:2' => 'Fairly satisfied~~',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:2+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3' => 'Rather dissatified~~',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3' => 'Rather dissatisfied~~',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:3+' => '',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4' => 'Very dissatified~~',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4' => 'Very dissatisfied~~',
|
||||
'Class:UserRequest/Attribute:user_satisfaction/Value:4+' => '',
|
||||
'Class:UserRequest/Error:CannotAssignParentRequestIdToSelf' => 'Cannot assign the Parent request to the request itself~~',
|
||||
'Class:UserRequest/Method:ResolveChildTickets' => 'ResolveChildTickets~~',
|
||||
@@ -228,7 +228,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Menu:UserRequest:OpenRequests+' => '',
|
||||
'Menu:UserRequest:Overview' => 'Overview~~',
|
||||
'Menu:UserRequest:Overview+' => '',
|
||||
'Menu:UserRequest:Provider' => 'Open requests transfered to provider~~',
|
||||
'Menu:UserRequest:Provider' => 'Open requests transferred to provider~~',
|
||||
'Menu:UserRequest:Provider+' => '',
|
||||
'Menu:UserRequest:Shortcuts' => 'Shortcuts~~',
|
||||
'Menu:UserRequest:Shortcuts+' => '~~',
|
||||
|
||||
@@ -72,7 +72,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Class:DeliveryModel' => 'Leverings model',
|
||||
'Class:DeliveryModel+' => '',
|
||||
'Class:DeliveryModel/Attribute:contacts_list' => 'Kontakt',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Person) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Persons) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:customers_list' => 'Kunde',
|
||||
'Class:DeliveryModel/Attribute:customers_list+' => 'All the customers having this delivering model~~',
|
||||
'Class:DeliveryModel/Attribute:description' => 'Beskrivelse',
|
||||
|
||||
@@ -41,7 +41,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Menu:Service:Overview+' => '',
|
||||
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Contracts by service level',
|
||||
'UI-ServiceManagementMenu-ContractsByStatus' => 'Contracts by status',
|
||||
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contracts ending in less then 30 days',
|
||||
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contracts ending in less than 30 days',
|
||||
|
||||
'Menu:ProviderContract' => 'Provider contracts',
|
||||
'Menu:ProviderContract+' => 'Provider contracts',
|
||||
@@ -528,7 +528,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:DeliveryModel/Attribute:description' => 'Description',
|
||||
'Class:DeliveryModel/Attribute:description+' => '',
|
||||
'Class:DeliveryModel/Attribute:contacts_list' => 'Contacts',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Person) for this delivery model',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Persons) for this delivery model',
|
||||
'Class:DeliveryModel/Attribute:customers_list' => 'Customers',
|
||||
'Class:DeliveryModel/Attribute:customers_list+' => 'All the customers having this delivering model',
|
||||
));
|
||||
|
||||
@@ -71,7 +71,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Class:DeliveryModel' => '提供モデル',
|
||||
'Class:DeliveryModel+' => '',
|
||||
'Class:DeliveryModel/Attribute:contacts_list' => '連絡先',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Person) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Persons) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:customers_list' => '顧客',
|
||||
'Class:DeliveryModel/Attribute:customers_list+' => 'All the customers having this delivering model~~',
|
||||
'Class:DeliveryModel/Attribute:description' => '説明',
|
||||
|
||||
@@ -71,7 +71,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Class:DeliveryModel' => 'Model dodávky',
|
||||
'Class:DeliveryModel+' => '~~',
|
||||
'Class:DeliveryModel/Attribute:contacts_list' => 'Kontakty',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Person) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Persons) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:customers_list' => 'Zákazníci',
|
||||
'Class:DeliveryModel/Attribute:customers_list+' => 'All the customers having this delivering model~~',
|
||||
'Class:DeliveryModel/Attribute:description' => 'Popis',
|
||||
|
||||
@@ -71,7 +71,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Class:DeliveryModel' => 'Delivery Model~~',
|
||||
'Class:DeliveryModel+' => '~~',
|
||||
'Class:DeliveryModel/Attribute:contacts_list' => 'Contacts~~',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Person) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Persons) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:customers_list' => 'Customers~~',
|
||||
'Class:DeliveryModel/Attribute:customers_list+' => 'All the customers having this delivering model~~',
|
||||
'Class:DeliveryModel/Attribute:description' => 'Description~~',
|
||||
|
||||
@@ -68,7 +68,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Class:DeliveryModel' => 'Leverings model',
|
||||
'Class:DeliveryModel+' => '',
|
||||
'Class:DeliveryModel/Attribute:contacts_list' => 'Kontakt',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Person) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Persons) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:customers_list' => 'Kunde',
|
||||
'Class:DeliveryModel/Attribute:customers_list+' => 'All the customers having this delivering model~~',
|
||||
'Class:DeliveryModel/Attribute:description' => 'Beskrivelse',
|
||||
|
||||
@@ -40,7 +40,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Menu:Service:Overview+' => '',
|
||||
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Contracts by service level',
|
||||
'UI-ServiceManagementMenu-ContractsByStatus' => 'Contracts by status',
|
||||
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contracts ending in less then 30 days',
|
||||
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contracts ending in less than 30 days',
|
||||
'Menu:ProviderContract' => 'Provider contracts',
|
||||
'Menu:ProviderContract+' => 'Provider contracts',
|
||||
'Menu:CustomerContract' => 'Customer contracts',
|
||||
@@ -486,7 +486,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:DeliveryModel/Attribute:description' => 'Description',
|
||||
'Class:DeliveryModel/Attribute:description+' => '',
|
||||
'Class:DeliveryModel/Attribute:contacts_list' => 'Contacts',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Person) for this delivery model',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Persons) for this delivery model',
|
||||
'Class:DeliveryModel/Attribute:customers_list' => 'Customers',
|
||||
'Class:DeliveryModel/Attribute:customers_list+' => 'All the customers having this delivering model',
|
||||
));
|
||||
|
||||
@@ -67,7 +67,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Class:DeliveryModel' => '提供モデル',
|
||||
'Class:DeliveryModel+' => '',
|
||||
'Class:DeliveryModel/Attribute:contacts_list' => '連絡先',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Person) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Persons) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:customers_list' => '顧客',
|
||||
'Class:DeliveryModel/Attribute:customers_list+' => 'All the customers having this delivering model~~',
|
||||
'Class:DeliveryModel/Attribute:description' => '説明',
|
||||
|
||||
@@ -67,7 +67,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Class:DeliveryModel' => 'Model dodávky',
|
||||
'Class:DeliveryModel+' => '~~',
|
||||
'Class:DeliveryModel/Attribute:contacts_list' => 'Kontakty',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Person) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Persons) for this delivery model~~',
|
||||
'Class:DeliveryModel/Attribute:customers_list' => 'Zákazníci',
|
||||
'Class:DeliveryModel/Attribute:customers_list+' => 'All the customers having this delivering model~~',
|
||||
'Class:DeliveryModel/Attribute:description' => 'Popis',
|
||||
|
||||
@@ -142,7 +142,7 @@ if (!class_exists('StructureInstaller'))
|
||||
|
||||
$sPersonClass = 'Person';
|
||||
$sPersonStateAttCode = MetaModel::GetStateAttributeCode($sPersonClass);
|
||||
$sPersonOwnerOrgAttCode = UserRightsProfile::GetOwnerOrganizationAttCode($sPersonClass);
|
||||
$sPersonOwnerOrgAttCode = UserRights::GetOwnerOrganizationAttCode($sPersonClass);
|
||||
|
||||
$iClassesWithLogCount = 0;
|
||||
$aCreatedTriggerIds = [];
|
||||
@@ -177,7 +177,7 @@ if (!class_exists('StructureInstaller'))
|
||||
);
|
||||
|
||||
// Filter on class owner org. if any
|
||||
$sClassOwnerOrgAttCode = UserRightsProfile::GetOwnerOrganizationAttCode($sClass);
|
||||
$sClassOwnerOrgAttCode = UserRights::GetOwnerOrganizationAttCode($sClass);
|
||||
$oOwnerOrgExpr = empty($sClassOwnerOrgAttCode) ? null : new BinaryExpression(
|
||||
new FieldExpression($sPersonOwnerOrgAttCode),
|
||||
'=',
|
||||
|
||||
@@ -48,7 +48,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Class:Action' => 'Brugerdefineret handling',
|
||||
'Class:Action+' => '',
|
||||
'Class:Action/Attribute:asynchronous' => 'Asynchronous~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in background or not~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in the background or not~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:no' => 'No~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:use_global_setting' => 'Use global setting~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:yes' => 'Yes~~',
|
||||
|
||||
@@ -20,7 +20,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Class:AuditCategory/Attribute:description' => 'Beskrivelse af Audit-kategori',
|
||||
'Class:AuditCategory/Attribute:description+' => 'Udførlig beskrivelse af denne Audit-kategori',
|
||||
'Class:AuditCategory/Attribute:domains_list' => 'Domains~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which includes this category~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which include this category~~',
|
||||
'Class:AuditCategory/Attribute:name' => 'Kategori navn',
|
||||
'Class:AuditCategory/Attribute:name+' => 'Kort navn for denne kategori',
|
||||
'Class:AuditCategory/Attribute:ok_error_tolerance' => 'Warning threshold~~',
|
||||
|
||||
@@ -126,7 +126,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Core:AttributeIPAddress+' => 'IP address',
|
||||
|
||||
'Core:AttributeOQL' => 'OQL',
|
||||
'Core:AttributeOQL+' => 'Object Query Langage expression',
|
||||
'Core:AttributeOQL+' => 'Object Query Language expression',
|
||||
|
||||
'Core:AttributeEnum' => 'Enum',
|
||||
'Core:AttributeEnum+' => 'List of predefined alphanumeric strings',
|
||||
@@ -362,7 +362,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:Event/Attribute:userinfo' => 'User info',
|
||||
'Class:Event/Attribute:userinfo+' => 'identification of the user that was doing the action that triggered this event',
|
||||
'Class:Event/Attribute:finalclass' => 'Event sub-class',
|
||||
'Class:Event/Attribute:finalclass+' => 'Name of the final class: specifies the sort of event which occured',
|
||||
'Class:Event/Attribute:finalclass+' => 'Name of the final class: specifies the sort of event which occurred',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -432,7 +432,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:EventWebService' => 'Web service event',
|
||||
'Class:EventWebService+' => 'Trace of an web service call',
|
||||
'Class:EventWebService+' => 'Trace of a web service call',
|
||||
'Class:EventWebService/Attribute:verb' => 'Verb',
|
||||
'Class:EventWebService/Attribute:verb+' => 'Name of the operation',
|
||||
'Class:EventWebService/Attribute:result' => 'Result',
|
||||
@@ -537,7 +537,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:Action/Attribute:trigger_list' => 'Related Triggers',
|
||||
'Class:Action/Attribute:trigger_list+' => 'Triggers linked to this action',
|
||||
'Class:Action/Attribute:asynchronous' => 'Asynchronous',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in background or not',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in the background or not',
|
||||
'Class:Action/Attribute:asynchronous/Value:use_global_setting' => 'Use global setting',
|
||||
'Class:Action/Attribute:asynchronous/Value:yes' => 'Yes',
|
||||
'Class:Action/Attribute:asynchronous/Value:no' => 'No',
|
||||
@@ -724,7 +724,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:TriggerOnPortalUpdate' => 'Trigger (when updated from the portal)',
|
||||
'Class:TriggerOnPortalUpdate+' => 'Trigger on a end-user\'s update from the portal',
|
||||
'Class:TriggerOnPortalUpdate+' => 'Trigger on an end-user\'s update from the portal',
|
||||
));
|
||||
|
||||
//
|
||||
|
||||
@@ -36,7 +36,7 @@ It groups all audit rules applying to that object scope',
|
||||
'Class:AuditCategory/Attribute:warning_error_tolerance' => 'Error threshold',
|
||||
'Class:AuditCategory/Attribute:warning_error_tolerance+' => 'Percentage of invalid objects below which the result is in error (red)',
|
||||
'Class:AuditCategory/Attribute:domains_list' => 'Domains',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which includes this category',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which include this category',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -333,7 +333,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:URP_StimulusGrant' => 'stimulus_permission',
|
||||
'Class:URP_StimulusGrant+' => 'permissions on stimilus in the life cycle of the object',
|
||||
'Class:URP_StimulusGrant+' => 'permissions on stimulus in the life cycle of the object',
|
||||
'Class:URP_StimulusGrant/Attribute:profileid' => 'Profile',
|
||||
'Class:URP_StimulusGrant/Attribute:profileid+' => 'usage profile',
|
||||
'Class:URP_StimulusGrant/Attribute:profile' => 'Profile',
|
||||
@@ -844,7 +844,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'UI:Schema:RelationDown_Description' => 'Down: %1$s',
|
||||
'UI:Schema:RelationUp_Description' => 'Up: %1$s',
|
||||
'UI:Schema:RelationPropagates' => '%1$s: propagate to %2$d levels, query: %3$s',
|
||||
'UI:Schema:RelationDoesNotPropagate' => '%1$s: does not propagates (%2$d levels), query: %3$s',
|
||||
'UI:Schema:RelationDoesNotPropagate' => '%1$s: does not propagate (%2$d levels), query: %3$s',
|
||||
'UI:Schema:Class_ReferencingClasses_From_By' => '%1$s is referenced by the class %2$s via the field %3$s',
|
||||
'UI:Schema:Class_IsLinkedTo_Class_Via_ClassAndAttribute' => '%1$s is linked to %2$s via %3$s::<em>%4$s</em>',
|
||||
'UI:Schema:Links:1-n' => 'Classes pointing to %1$s (1:n links):',
|
||||
@@ -897,7 +897,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'UI:Delete:NotAllowedToDelete' => 'You are not allowed to delete this object',
|
||||
'UI:Delete:NotAllowedToUpdate_Fields' => 'You are not allowed to update the fields: %1$s',
|
||||
'UI:Error:ActionNotAllowed' => 'You are not allowed to do this action',
|
||||
'UI:Error:NotEnoughRightsToDelete' => 'This object could not be deleted because the current user do not have sufficient rights',
|
||||
'UI:Error:NotEnoughRightsToDelete' => 'This object could not be deleted because the current user does not have sufficient rights.',
|
||||
'UI:Error:CannotDeleteBecause' => 'This object could not be deleted because: %1$s',
|
||||
'UI:Error:CannotDeleteBecauseOfDepencies' => 'This object could not be deleted because some manual operations must be performed prior to that',
|
||||
'UI:Error:CannotDeleteBecauseManualOpNeeded' => 'This object could not be deleted because some manual operations must be performed prior to that',
|
||||
@@ -1095,7 +1095,7 @@ When associated with a trigger, each action is given an "order" number, specifyi
|
||||
'UI:Document:NoPreview' => 'No preview is available for this type of document',
|
||||
'UI:Download-CSV' => 'Download %1$s',
|
||||
|
||||
'UI:DeadlineMissedBy_duration' => 'Missed by %1$s',
|
||||
'UI:DeadlineMissedBy_duration' => 'Missed by %1$s',
|
||||
'UI:Deadline_LessThan1Min' => '< 1 min',
|
||||
'UI:Deadline_Minutes' => '%1$d min',
|
||||
'UI:Deadline_Hours_Minutes' => '%1$dh %2$dmin',
|
||||
@@ -1225,7 +1225,7 @@ When associated with a trigger, each action is given an "order" number, specifyi
|
||||
'UI:Favorites:ShowObsoleteData' => 'Show obsolete data',
|
||||
'UI:Favorites:ShowObsoleteData+' => 'Show obsolete data in search results and lists of items to select',
|
||||
'UI:NavigateAwayConfirmationMessage' => 'Any modification will be discarded.',
|
||||
'UI:CancelConfirmationMessage' => 'You will loose your changes. Continue anyway?',
|
||||
'UI:CancelConfirmationMessage' => 'You will lose your changes. Continue anyway?',
|
||||
'UI:AutoApplyConfirmationMessage' => 'Some changes have not been applied yet. Do you want '.ITOP_APPLICATION_SHORT.' to take them into account?',
|
||||
'UI:Create_Class_InState' => 'Create the %1$s in state: ',
|
||||
'UI:OrderByHint_Values' => 'Sort order: %1$s',
|
||||
@@ -1263,7 +1263,7 @@ When associated with a trigger, each action is given an "order" number, specifyi
|
||||
'UI:Dashboard:EditCustom' => 'Edit custom version...',
|
||||
'UI:Dashboard:CreateCustom' => 'Create a custom version...',
|
||||
'UI:Dashboard:DeleteCustom' => 'Delete custom version...',
|
||||
'UI:Dashboard:RevertConfirm' => 'Every changes made to the original version will be lost. Please confirm that you want to do this.',
|
||||
'UI:Dashboard:RevertConfirm' => 'Every change made to the original version will be lost. Please confirm that you want to do this.',
|
||||
'UI:ExportDashBoard' => 'Export to a file',
|
||||
'UI:ImportDashBoard' => 'Import from a file...',
|
||||
'UI:ImportDashboardTitle' => 'Import From a File',
|
||||
@@ -1360,7 +1360,7 @@ When associated with a trigger, each action is given an "order" number, specifyi
|
||||
// ---
|
||||
|
||||
'UI:DashletHeaderStatic:Label' => 'Header',
|
||||
'UI:DashletHeaderStatic:Description' => 'Displays an horizontal separator',
|
||||
'UI:DashletHeaderStatic:Description' => 'Displays a horizontal separator',
|
||||
'UI:DashletHeaderStatic:Prop-Title' => 'Title',
|
||||
'UI:DashletHeaderStatic:Prop-Title:Default' => 'Contacts',
|
||||
'UI:DashletHeaderStatic:Prop-Icon' => 'Icon',
|
||||
|
||||
@@ -165,7 +165,7 @@ Elle s\'applique à tous les objets dans le périmètre de sa catégorie d\'audi
|
||||
'Class:URP_Profiles/Attribute:user_list' => 'Utilisateurs',
|
||||
'Class:URP_Profiles/Attribute:user_list+' => 'Comptes utilisateur (logins) ayant ce profil',
|
||||
'Class:URP_StimulusGrant' => 'stimulus_permission',
|
||||
'Class:URP_StimulusGrant+' => 'permissions on stimilus in the life cycle of the object',
|
||||
'Class:URP_StimulusGrant+' => 'permissions on stimulus in the life cycle of the object',
|
||||
'Class:URP_StimulusGrant/Attribute:class' => 'Class',
|
||||
'Class:URP_StimulusGrant/Attribute:class+' => 'Target class',
|
||||
'Class:URP_StimulusGrant/Attribute:permission' => 'Permission',
|
||||
|
||||
@@ -47,7 +47,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Class:Action' => 'Egyéni művelet',
|
||||
'Class:Action+' => 'A felhasználó által meghatározott művelet',
|
||||
'Class:Action/Attribute:asynchronous' => 'Asynchronous~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in background or not~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in the background or not~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:no' => 'No~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:use_global_setting' => 'Use global setting~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:yes' => 'Yes~~',
|
||||
|
||||
@@ -20,7 +20,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Class:AuditCategory/Attribute:description' => 'Leírás',
|
||||
'Class:AuditCategory/Attribute:description+' => '',
|
||||
'Class:AuditCategory/Attribute:domains_list' => 'Domains~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which includes this category~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which include this category~~',
|
||||
'Class:AuditCategory/Attribute:name' => 'Kategórianév',
|
||||
'Class:AuditCategory/Attribute:name+' => '',
|
||||
'Class:AuditCategory/Attribute:ok_error_tolerance' => 'Warning threshold~~',
|
||||
|
||||
@@ -47,7 +47,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Class:Action' => 'カスタムアクション',
|
||||
'Class:Action+' => 'ユーザ定義アクション',
|
||||
'Class:Action/Attribute:asynchronous' => 'Asynchronous~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in background or not~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in the background or not~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:no' => 'No~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:use_global_setting' => 'Use global setting~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:yes' => 'Yes~~',
|
||||
|
||||
@@ -20,7 +20,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Class:AuditCategory/Attribute:description' => '監査カテゴリ説明',
|
||||
'Class:AuditCategory/Attribute:description+' => '監査カテゴリの説明',
|
||||
'Class:AuditCategory/Attribute:domains_list' => 'Domains~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which includes this category~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which include this category~~',
|
||||
'Class:AuditCategory/Attribute:name' => 'カテゴリ名',
|
||||
'Class:AuditCategory/Attribute:name+' => 'カテゴリの短縮名',
|
||||
'Class:AuditCategory/Attribute:ok_error_tolerance' => 'Warning threshold~~',
|
||||
|
||||
@@ -21,7 +21,7 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'Class:AuditCategory/Attribute:description' => 'Audit categorie beschrijving',
|
||||
'Class:AuditCategory/Attribute:description+' => 'Uitgebreide beschrijving van deze Audit categorie',
|
||||
'Class:AuditCategory/Attribute:domains_list' => 'Domeinen',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which includes this category~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which include this category~~',
|
||||
'Class:AuditCategory/Attribute:name' => 'Naam categorie',
|
||||
'Class:AuditCategory/Attribute:name+' => 'Afkorting van de naam van deze categorie',
|
||||
'Class:AuditCategory/Attribute:ok_error_tolerance' => 'Warning threshold~~',
|
||||
|
||||
@@ -47,7 +47,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Class:Action' => 'Ação personalizada',
|
||||
'Class:Action+' => 'Ações definidas pelo usuário',
|
||||
'Class:Action/Attribute:asynchronous' => 'Asynchronous~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in background or not~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in the background or not~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:no' => 'No~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:use_global_setting' => 'Use global setting~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:yes' => 'Yes~~',
|
||||
|
||||
@@ -20,7 +20,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Class:AuditCategory/Attribute:description' => 'Descrição',
|
||||
'Class:AuditCategory/Attribute:description+' => 'Longa descrição para esta categoria de auditoria',
|
||||
'Class:AuditCategory/Attribute:domains_list' => 'Domains~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which includes this category~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which include this category~~',
|
||||
'Class:AuditCategory/Attribute:name' => 'Nome',
|
||||
'Class:AuditCategory/Attribute:name+' => 'Nome curto para esta categoria',
|
||||
'Class:AuditCategory/Attribute:ok_error_tolerance' => 'Warning threshold~~',
|
||||
|
||||
@@ -48,7 +48,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Class:Action' => 'Действие',
|
||||
'Class:Action+' => 'Действие, определённое пользователем',
|
||||
'Class:Action/Attribute:asynchronous' => 'Asynchronous~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in background or not~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in the background or not~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:no' => 'No~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:use_global_setting' => 'Use global setting~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:yes' => 'Yes~~',
|
||||
@@ -370,7 +370,7 @@ If omitted the From (label) is used.~~',
|
||||
'Class:EventRestService/Attribute:version' => 'Version',
|
||||
'Class:EventRestService/Attribute:version+' => 'Argument \'version\'',
|
||||
'Class:EventWebService' => 'События Web-сервиса',
|
||||
'Class:EventWebService+' => 'Trace of an web service call~~',
|
||||
'Class:EventWebService+' => 'Trace of a web service call~~',
|
||||
'Class:EventWebService/Attribute:data' => 'Данные',
|
||||
'Class:EventWebService/Attribute:data+' => 'Результаты данных',
|
||||
'Class:EventWebService/Attribute:log_error' => 'Лог ошибок',
|
||||
|
||||
@@ -21,7 +21,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Class:AuditCategory/Attribute:description' => 'Описание категории аудита',
|
||||
'Class:AuditCategory/Attribute:description+' => 'Полное описание категории аудита',
|
||||
'Class:AuditCategory/Attribute:domains_list' => 'Domains~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which includes this category~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which include this category~~',
|
||||
'Class:AuditCategory/Attribute:name' => 'Название категории',
|
||||
'Class:AuditCategory/Attribute:name+' => 'Краткое название для этой категории',
|
||||
'Class:AuditCategory/Attribute:ok_error_tolerance' => 'Warning threshold~~',
|
||||
@@ -799,7 +799,7 @@ Domain usually correspond to who is responsible for checking and fixing errors~~
|
||||
'UI:DashletHeaderDynamic:Prop-Title' => 'Заголовок',
|
||||
'UI:DashletHeaderDynamic:Prop-Title:Default' => 'Контакты',
|
||||
'UI:DashletHeaderDynamic:Prop-Values' => 'Значения',
|
||||
'UI:DashletHeaderStatic:Description' => 'Displays an horizontal separator~~',
|
||||
'UI:DashletHeaderStatic:Description' => 'Displays a horizontal separator~~',
|
||||
'UI:DashletHeaderStatic:Label' => 'Заголовок',
|
||||
'UI:DashletHeaderStatic:Prop-Icon' => 'Иконка',
|
||||
'UI:DashletHeaderStatic:Prop-Title' => 'Заголовок',
|
||||
|
||||
@@ -47,7 +47,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Class:Action' => 'Vlastná akcia',
|
||||
'Class:Action+' => 'User defined action~~',
|
||||
'Class:Action/Attribute:asynchronous' => 'Asynchronous~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in background or not~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in the background or not~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:no' => 'No~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:use_global_setting' => 'Use global setting~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:yes' => 'Yes~~',
|
||||
@@ -287,7 +287,7 @@ You can use in the OQL :this->attribute_code with an attribute code of the objec
|
||||
'Class:Event/Attribute:date' => 'Dátum',
|
||||
'Class:Event/Attribute:date+' => 'date and time at which the changes have been recorded~~',
|
||||
'Class:Event/Attribute:finalclass' => 'Typ',
|
||||
'Class:Event/Attribute:finalclass+' => 'Name of the final class: specifies the sort of event which occured~~',
|
||||
'Class:Event/Attribute:finalclass+' => 'Name of the final class: specifies the sort of event which occurred~~',
|
||||
'Class:Event/Attribute:message' => 'Správa',
|
||||
'Class:Event/Attribute:message+' => 'short description of the event~~',
|
||||
'Class:Event/Attribute:userinfo' => 'Informácie o užívateľovi',
|
||||
@@ -383,7 +383,7 @@ You can use in the OQL :this->attribute_code with an attribute code of the objec
|
||||
'Class:EventRestService/Attribute:version' => 'Version~~',
|
||||
'Class:EventRestService/Attribute:version+' => 'Argument \'version\'~~',
|
||||
'Class:EventWebService' => 'Udalosť Webovej služby',
|
||||
'Class:EventWebService+' => 'Trace of an web service call~~',
|
||||
'Class:EventWebService+' => 'Trace of a web service call~~',
|
||||
'Class:EventWebService/Attribute:data' => 'Dáta',
|
||||
'Class:EventWebService/Attribute:data+' => 'Result data~~',
|
||||
'Class:EventWebService/Attribute:log_error' => 'Záznam Chyby',
|
||||
@@ -582,7 +582,7 @@ This icon is shown in the tooltip of the “Lock” symbol on '.ITOP_APPLICATION
|
||||
'Class:TriggerOnObjectUpdate/Attribute:target_attcodes' => 'Target fields~~',
|
||||
'Class:TriggerOnObjectUpdate/Attribute:target_attcodes+' => '~~',
|
||||
'Class:TriggerOnPortalUpdate' => 'Spúštač (pri aktualizácií z portálu)',
|
||||
'Class:TriggerOnPortalUpdate+' => 'Trigger on a end-user\'s update from the portal~~',
|
||||
'Class:TriggerOnPortalUpdate+' => 'Trigger on an end-user\'s update from the portal~',
|
||||
'Class:TriggerOnStateChange' => 'Spúšťač (pri zmene stavu)',
|
||||
'Class:TriggerOnStateChange+' => 'Trigger on object state change~~',
|
||||
'Class:TriggerOnStateChange/Attribute:state' => 'Stav',
|
||||
@@ -705,7 +705,7 @@ Ak je čas vynechaný, predvolený čas je 00:00:00
|
||||
'Core:AttributeMetaEnum' => 'Computed enum~~',
|
||||
'Core:AttributeMetaEnum+' => '~~',
|
||||
'Core:AttributeOQL' => 'OQL',
|
||||
'Core:AttributeOQL+' => 'Object Query Langage expression~~',
|
||||
'Core:AttributeOQL+' => 'Object Query Language expression~~',
|
||||
'Core:AttributeObsolescenceDate' => 'Obsolescence date~~',
|
||||
'Core:AttributeObsolescenceDate+' => '~~',
|
||||
'Core:AttributeObsolescenceDate/Label' => 'Obsolescence date~~',
|
||||
|
||||
@@ -21,7 +21,7 @@ It groups all audit rules applying to that object scope~~',
|
||||
'Class:AuditCategory/Attribute:description' => 'Popis kategórie auditu',
|
||||
'Class:AuditCategory/Attribute:description+' => 'Long description for this audit category~~',
|
||||
'Class:AuditCategory/Attribute:domains_list' => 'Domains~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which includes this category~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which include this category~~',
|
||||
'Class:AuditCategory/Attribute:name' => 'Názov kategórie',
|
||||
'Class:AuditCategory/Attribute:name+' => 'Identify a scope of objects to audit~~',
|
||||
'Class:AuditCategory/Attribute:ok_error_tolerance' => 'Warning threshold~~',
|
||||
@@ -164,7 +164,7 @@ It is applied on the scope of objects defined by the audit category~~',
|
||||
'Class:URP_Profiles/Attribute:user_list' => 'Užívatelia',
|
||||
'Class:URP_Profiles/Attribute:user_list+' => 'persons having this role~~',
|
||||
'Class:URP_StimulusGrant' => 'Povolenia stimulu',
|
||||
'Class:URP_StimulusGrant+' => 'permissions on stimilus in the life cycle of the object~~',
|
||||
'Class:URP_StimulusGrant+' => 'permissions on stimulus in the life cycle of the object~~',
|
||||
'Class:URP_StimulusGrant/Attribute:class' => 'Trieda',
|
||||
'Class:URP_StimulusGrant/Attribute:class+' => 'Target class~~',
|
||||
'Class:URP_StimulusGrant/Attribute:permission' => 'Povolenie',
|
||||
|
||||
@@ -48,7 +48,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Class:Action' => 'Özel işlem',
|
||||
'Class:Action+' => 'Kullanıcının tanımladığı işlemler',
|
||||
'Class:Action/Attribute:asynchronous' => 'Asynchronous~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in background or not~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in the background or not~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:no' => 'No~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:use_global_setting' => 'Use global setting~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:yes' => 'Yes~~',
|
||||
|
||||
@@ -20,7 +20,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Class:AuditCategory/Attribute:description' => 'Kategori tanımlaması',
|
||||
'Class:AuditCategory/Attribute:description+' => 'Kategori tanımlaması',
|
||||
'Class:AuditCategory/Attribute:domains_list' => 'Domains~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which includes this category~~',
|
||||
'Class:AuditCategory/Attribute:domains_list+' => 'Domains which include this category~~',
|
||||
'Class:AuditCategory/Attribute:name' => 'Kategori Adı',
|
||||
'Class:AuditCategory/Attribute:name+' => 'Kategornin kısa adı',
|
||||
'Class:AuditCategory/Attribute:ok_error_tolerance' => 'Warning threshold~~',
|
||||
|
||||
@@ -30,7 +30,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Edits:Tooltip' => 'Show / hide fields edits on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Menu:Hint' => 'Choose which logs to display on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Title' => 'Logs~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => 'Show / hide logs entries on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => 'Show / hide log entries on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Title' => 'State changes~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Tooltip' => 'Show / hide state changes on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Info:AuthorsCount:Tooltip' => 'Number of persons interacting in the visible entries~~',
|
||||
|
||||
@@ -29,7 +29,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'UI:Layout:ActivityPanel:Tab:Activity:Title' => 'Activity',
|
||||
'UI:Layout:ActivityPanel:Tab:Log:DraftIndicator:Tooltip' => 'Draft entry',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Title' => 'Logs',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => 'Show / hide logs entries on this tab',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => 'Show / hide log entries on this tab',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Menu:Hint' => 'Choose which logs to display on this tab',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Title' => 'State changes',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Tooltip' => 'Show / hide state changes on this tab',
|
||||
|
||||
@@ -30,7 +30,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Edits:Tooltip' => 'Show / hide fields edits on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Menu:Hint' => 'Choose which logs to display on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Title' => 'Logs~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => 'Show / hide logs entries on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => 'Show / hide log entries on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Title' => 'State changes~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Tooltip' => 'Show / hide state changes on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Info:AuthorsCount:Tooltip' => 'Number of persons interacting in the visible entries~~',
|
||||
|
||||
@@ -30,7 +30,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Edits:Tooltip' => 'Show / hide fields edits on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Menu:Hint' => 'Choose which logs to display on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Title' => 'Logs~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => 'Show / hide logs entries on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => 'Show / hide log entries on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Title' => 'State changes~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Tooltip' => 'Show / hide state changes on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Info:AuthorsCount:Tooltip' => 'Number of persons interacting in the visible entries~~',
|
||||
|
||||
@@ -30,7 +30,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Edits:Tooltip' => 'Show / hide fields edits on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Menu:Hint' => 'Choose which logs to display on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Title' => 'Logs~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => 'Show / hide logs entries on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => 'Show / hide log entries on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Title' => 'State changes~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Tooltip' => 'Show / hide state changes on this tab~~',
|
||||
'UI:Layout:ActivityPanel:Tab:Toolbar:Info:AuthorsCount:Tooltip' => 'Number of persons interacting in the visible entries~~',
|
||||
|
||||
@@ -10,5 +10,5 @@
|
||||
*
|
||||
*/
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exists for page content "%2$s"~~',
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exist for page content "%2$s"~~',
|
||||
]);
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
*/
|
||||
|
||||
Dict::Add('EN US', 'English', 'English', [
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exists for page content "%2$s"',
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exist for page content "%2$s"',
|
||||
]);
|
||||
|
||||
@@ -10,5 +10,5 @@
|
||||
*
|
||||
*/
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exists for page content "%2$s"~~',
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exist for page content "%2$s"~~',
|
||||
]);
|
||||
|
||||
@@ -10,5 +10,5 @@
|
||||
*
|
||||
*/
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exists for page content "%2$s"~~',
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exist for page content "%2$s"~~',
|
||||
]);
|
||||
|
||||
@@ -10,5 +10,5 @@
|
||||
*
|
||||
*/
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exists for page content "%2$s"~~',
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exist for page content "%2$s"~~',
|
||||
]);
|
||||
|
||||
@@ -10,5 +10,5 @@
|
||||
*
|
||||
*/
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exists for page content "%2$s"~~',
|
||||
'UIBlock:Error:CannotGetBlocks' => 'Could not retrieve blocks from content area "%1$s" as it does seem to exist for page content "%2$s"~~',
|
||||
]);
|
||||
|
||||
@@ -47,7 +47,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'Class:Action' => '自定义操作',
|
||||
'Class:Action+' => '用户定义的操作',
|
||||
'Class:Action/Attribute:asynchronous' => 'Asynchronous~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in background or not~~',
|
||||
'Class:Action/Attribute:asynchronous+' => 'Whether this action should be executed in the background or not~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:no' => 'No~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:use_global_setting' => 'Use global setting~~',
|
||||
'Class:Action/Attribute:asynchronous/Value:yes' => 'Yes~~',
|
||||
|
||||
@@ -445,19 +445,6 @@ class EMailLaminas extends Email
|
||||
$oBody->addPart($oAdditionalPart);
|
||||
}
|
||||
|
||||
if ($oBody->isMultiPart()) {
|
||||
$oContentTypeHeader = $this->m_oMessage->getHeaders();
|
||||
foreach ($oContentTypeHeader as $oHeader) {
|
||||
if (!$oHeader instanceof ContentType) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$oHeader->setType(Mime::MULTIPART_MIXED);
|
||||
$oHeader->addParameter('boundary', $oBody->getMime()->boundary());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$this->m_oMessage->setBody($oBody);
|
||||
}
|
||||
|
||||
@@ -478,22 +465,13 @@ class EMailLaminas extends Email
|
||||
$oNewPart = new Part($sText);
|
||||
$oNewPart->encoding = Mime::ENCODING_8BIT;
|
||||
$oNewPart->type = $sMimeType;
|
||||
$this->m_oMessage->getBody()->addPart($oNewPart);
|
||||
|
||||
// setBody called only to refresh Content-Type to multipart/mixed
|
||||
$this->m_oMessage->setBody($this->m_oMessage->getBody()->addPart($oNewPart));
|
||||
}
|
||||
|
||||
public function AddAttachment($data, $sFileName, $sMimeType)
|
||||
{
|
||||
$oBody = $this->m_oMessage->getBody();
|
||||
|
||||
if (!$oBody->isMultiPart()) {
|
||||
$multipart_content = new Part($oBody->generateMessage());
|
||||
$multipart_content->setType($oBody->getParts()[0]->getType());
|
||||
$multipart_content->setBoundary($oBody->getMime()->boundary());
|
||||
|
||||
$oBody = new \Laminas\Mime\Message();
|
||||
$oBody->addPart($multipart_content);
|
||||
}
|
||||
|
||||
if (!array_key_exists('attachments', $this->m_aData)) {
|
||||
$this->m_aData['attachments'] = array();
|
||||
}
|
||||
@@ -504,23 +482,8 @@ class EMailLaminas extends Email
|
||||
$oNewAttachment->disposition = Mime::DISPOSITION_ATTACHMENT;
|
||||
$oNewAttachment->encoding = Mime::ENCODING_BASE64;
|
||||
|
||||
|
||||
$oBody->addPart($oNewAttachment);
|
||||
|
||||
if ($oBody->isMultiPart()) {
|
||||
$oContentTypeHeader = $this->m_oMessage->getHeaders();
|
||||
foreach ($oContentTypeHeader as $oHeader) {
|
||||
if (!$oHeader instanceof ContentType) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$oHeader->setType(Mime::MULTIPART_MIXED);
|
||||
$oHeader->addParameter('boundary', $oBody->getMime()->boundary());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$this->m_oMessage->setBody($oBody);
|
||||
// setBody called only to refresh Content-Type to multipart/mixed
|
||||
$this->m_oMessage->setBody($this->m_oMessage->getBody()->addPart($oNewAttachment));
|
||||
}
|
||||
|
||||
public function SetSubject($sSubject)
|
||||
|
||||
@@ -1087,10 +1087,10 @@ abstract class ItopDataTestCase extends ItopTestCase
|
||||
* @param string $sClass
|
||||
* @param array $aValues
|
||||
*
|
||||
* @return DBObject
|
||||
* @return int
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function GivenObjectInDB($sClass, $aValues)
|
||||
protected function GivenObjectInDB($sClass, $aValues):int
|
||||
{
|
||||
// Check and complete the values
|
||||
foreach ($aValues as $sAttCode => $oValue) {
|
||||
@@ -1406,4 +1406,37 @@ abstract class ItopDataTestCase extends ItopTestCase
|
||||
self::markTestSkipped("Test skipped: module '$sModule' is not present");
|
||||
}
|
||||
}
|
||||
|
||||
protected function GivenUserLoggedInWithContact(int $iContactOrgId)
|
||||
{
|
||||
$iContactId = $this->GivenObjectInDB('Person', [
|
||||
'first_name' => 'TestContact',
|
||||
'name' => 'TestContact',
|
||||
'org_id' => $iContactOrgId]);
|
||||
$sLogin = 'demo_test_'.uniqid(__CLASS__, true);
|
||||
$iUser = $this->GivenObjectInDB('UserLocal', [
|
||||
'login' => $sLogin,
|
||||
'password' => 'tagada-Secret,007',
|
||||
'language' => 'EN US',
|
||||
'contactid' => $iContactId,
|
||||
'profile_list' => [
|
||||
'profileid:'.self::$aURP_Profiles['Configuration Manager']
|
||||
]
|
||||
]);
|
||||
\UserRights::Login($sLogin);
|
||||
}
|
||||
|
||||
protected function GivenUserLoggedInWithoutContact()
|
||||
{
|
||||
$sLogin = 'demo_test_'.uniqid(__CLASS__, true);
|
||||
$iUser = $this->GivenObjectInDB('UserLocal', [
|
||||
'login' => $sLogin,
|
||||
'password' => 'tagada-Secret,007',
|
||||
'language' => 'EN US',
|
||||
'profile_list' => [
|
||||
'profileid:'.self::$aURP_Profiles['Configuration Manager']
|
||||
]
|
||||
]);
|
||||
\UserRights::Login($sLogin);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,4 +45,43 @@ class EMailTest extends ItopTestCase {
|
||||
$oConfig->Set('email_transport', $sCurrentEmailTransport);
|
||||
$oConfig->Set('email_asynchronous', $sCurrentEmailAsync);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @throws \ConfigException
|
||||
* @throws \CoreException
|
||||
* @covers Email::SetBody()
|
||||
* @covers Email::Send()
|
||||
*/
|
||||
public function testCheckPartsHeadersOnSendEmailWithAttachment(): void
|
||||
{
|
||||
$oConfig = utils::GetConfig();
|
||||
$sCurrentEmailTransport = $oConfig->Get('email_transport');
|
||||
$sCurrentEmailAsync = $oConfig->Get('email_asynchronous');
|
||||
|
||||
// Set our email transport to file, so we can read it after
|
||||
$oConfig->Set('email_transport', 'LogFile');
|
||||
$oConfig->Set('email_asynchronous', false);
|
||||
|
||||
$oEmail = new Email();
|
||||
$oEmail->SetRecipientTO('email@email.com');
|
||||
$oEmail->SetRecipientFrom('email2@email2.com');
|
||||
$oEmail->SetSubject('dummy subject');
|
||||
$oEmail->SetBody('dummy body', 'text/plain');
|
||||
$oEmail->AddAttachment('Dummy attachment', 'attachment.txt', 'text/plain');
|
||||
|
||||
// Send the mail and check if there's any issue
|
||||
$aIssues = [];
|
||||
$oEmail->Send($aIssues);
|
||||
$this->assertEmpty($aIssues);
|
||||
|
||||
// Check if our charset is correctly set
|
||||
// We know this file may be used by other future test, but as we can't configure output filename, it is what it is
|
||||
$sEmailContent = file_get_contents(APPROOT.'log/mail.log');
|
||||
$this->assertStringContainsString('Content-Type: text/plain; charset=UTF-8', $sEmailContent);
|
||||
|
||||
// Set our previous email transport value back, so it doesn't affect other tests
|
||||
$oConfig->Set('email_transport', $sCurrentEmailTransport);
|
||||
$oConfig->Set('email_asynchronous', $sCurrentEmailAsync);
|
||||
}
|
||||
}
|
||||
@@ -59,4 +59,33 @@ class InlineImageTest extends ItopDataTestCase
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function testSetDefaultOrgIdWhenLoggedInWithContact()
|
||||
{
|
||||
$iContactOrgId = $this->GivenObjectInDB('Organization', ['name' => 'TestOrg']);
|
||||
$this->GivenUserLoggedInWithContact($iContactOrgId);
|
||||
|
||||
$oInlineImage = \MetaModel::NewObject('InlineImage',['item_class' => 'UserRequest']);
|
||||
$oInlineImage->SetDefaultOrgId();
|
||||
$this->assertEquals($iContactOrgId, $oInlineImage->Get('item_org_id'),'The org_id should be the one of the contact');
|
||||
|
||||
$oInlineImage = \MetaModel::NewObject('InlineImage',['item_class' => 'TriggerOnObjectCreate']);
|
||||
$oInlineImage->SetDefaultOrgId();
|
||||
$this->assertEquals(0, $oInlineImage->Get('item_org_id'),'The org_id should be left undefined');
|
||||
}
|
||||
|
||||
|
||||
public function testSetDefaultOrgIdWhenLoggedInWithoutContact()
|
||||
{
|
||||
$this->GivenUserLoggedInWithoutContact();
|
||||
|
||||
$oInlineImage = \MetaModel::NewObject('InlineImage',['item_class' => 'UserRequest']);
|
||||
$oInlineImage->SetDefaultOrgId();
|
||||
$this->assertEquals(0, $oInlineImage->Get('item_org_id'),'The org_id should be left undefined');
|
||||
|
||||
$oInlineImage = \MetaModel::NewObject('InlineImage',['item_class' => 'TriggerOnObjectCreate']);
|
||||
$oInlineImage->SetDefaultOrgId();
|
||||
$this->assertEquals(0, $oInlineImage->Get('item_org_id'),'The org_id should be left undefined');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -488,4 +488,18 @@ class UserRightsTest extends ItopDataTestCase
|
||||
'with Admins hidden' => [true, 0],
|
||||
];
|
||||
}
|
||||
|
||||
public function testGetOwnerOrganizationAttCode()
|
||||
{
|
||||
$this->assertEquals('id', UserRights::GetOwnerOrganizationAttCode('Organization'));
|
||||
|
||||
$this->assertEquals('org_id', UserRights::GetOwnerOrganizationAttCode('Server'));
|
||||
$this->assertEquals('org_id', UserRights::GetOwnerOrganizationAttCode('UserRequest'));
|
||||
|
||||
$this->assertEquals('item_org_id', UserRights::GetOwnerOrganizationAttCode('InlineImage'));
|
||||
$this->assertEquals('item_org_id', UserRights::GetOwnerOrganizationAttCode('Attachment'));
|
||||
|
||||
$this->assertNull(UserRights::GetOwnerOrganizationAttCode('TriggerOnObjectCreation'));
|
||||
$this->assertNull(UserRights::GetOwnerOrganizationAttCode('lnkPersonToTeam'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,4 +69,46 @@ class TestAttachment extends ItopDataTestCase
|
||||
$oDocument = $oAttachment->Get('contents');
|
||||
$this->sRemoveAttachmentName = $oDocument->GetFileName();
|
||||
}
|
||||
|
||||
|
||||
public function testSetItemOnObjectWithDefinedOrganization()
|
||||
{
|
||||
$iOrgId = $this->GivenObjectInDB('Organization', ['name' => 'TestOrg']);
|
||||
$oUserRequest = $this->GivenObject('UserRequest', ['title' => 'TestUserRequest', 'org_id'=>$iOrgId]);
|
||||
|
||||
$oAttachment = new \Attachment();
|
||||
$oAttachment->SetItem($oUserRequest);
|
||||
$this->assertEquals($iOrgId, $oAttachment->Get('item_org_id'),'The org_id should be the one of the contact');
|
||||
}
|
||||
|
||||
|
||||
public function testSetItemOnObjectWithoutDefinedOrganization()
|
||||
{
|
||||
$oUserRequest = $this->GivenObject('TriggerOnObjectCreate', ['target_class' => 'UserRequest','description'=>'TestUserRequest']);
|
||||
|
||||
$oAttachment = new \Attachment();
|
||||
$oAttachment->SetItem($oUserRequest);
|
||||
$this->assertEquals(0, $oAttachment->Get('item_org_id'),'The org_id should be the one of the contact');
|
||||
}
|
||||
|
||||
|
||||
public function testSetDefaultOrgIdWhenLoggedInWithContact()
|
||||
{
|
||||
$iContactOrgId = $this->GivenObjectInDB('Organization', ['name' => 'TestOrg']);
|
||||
$this->GivenUserLoggedInWithContact($iContactOrgId);
|
||||
|
||||
$oAttachment = new \Attachment();
|
||||
$oAttachment->SetDefaultOrgId();
|
||||
$this->assertEquals($iContactOrgId, $oAttachment->Get('item_org_id'),'The org_id should be the one of the contact');
|
||||
}
|
||||
|
||||
|
||||
public function testSetDefaultOrgIdWhenLoggedInWithoutContact()
|
||||
{
|
||||
$this->GivenUserLoggedInWithoutContact();
|
||||
|
||||
$oAttachment = new \Attachment();
|
||||
$oAttachment->SetDefaultOrgId();
|
||||
$this->assertEquals(0, $oAttachment->Get('item_org_id'),'The org_id should be left undefined');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user