Compare commits

...

42 Commits

Author SHA1 Message Date
Denis Flaven
b4a33b521a Fix for supporting the CSV export of big audit results.
SVN:1.2.1[2597]
2013-02-06 14:38:24 +00:00
Denis Flaven
2bc01db8d9 Fix for Trac #670: XSS vulnerability issue.
SVN:1.2.1[2587]
2013-01-22 17:34:36 +00:00
Denis Flaven
d72503b411 Bug fix: (replicate what was done in the 1.2 branch) make sure that we differentiate the cache entries for the queries with and without the $bAllowAllData flag
SVN:1.2.1[2581]
2012-12-17 12:42:14 +00:00
Denis Flaven
71732f1722 Do not perform time consuming computations for building the menus if there are too many objects in a list (limit is configurable).
SVN:1.2.1[2343]
2012-10-24 14:00:26 +00:00
Denis Flaven
489c4c05e0 Do not perform time consuming computations for building the menus if there are too many objects in a list (limit is configurable).
SVN:1.2.1[2341]
2012-10-24 13:48:20 +00:00
Denis Flaven
f65e18400d Bug fix: regression introduced by revision 2278.
SVN:1.2.1[2339]
2012-10-24 13:18:26 +00:00
Denis Flaven
9a53938473 Optimization to speed-up the "group-by" tables. (The complete solution is implemented in 2.0)
SVN:1.2.1[2337]
2012-10-24 13:09:24 +00:00
Romain Quetiez
e2bd0b82c7 Fixed regression (CSV import - unknown method utils::GetConfig) -same fix as in branch 1.2
SVN:1.2.1[2323]
2012-10-22 08:09:31 +00:00
Romain Quetiez
48a067c286 #583 Losing attachments when performing massive change
SVN:1.2.1[2285]
2012-10-18 09:39:09 +00:00
Denis Flaven
bd933f3b14 Properly handle all types of fields when entering values via the state transition "wizard" screen
SVN:1.2.1[2281]
2012-10-17 14:13:22 +00:00
Denis Flaven
cb9bc8f6d7 Properly handle a change of an external key...
SVN:1.2.1[2278]
2012-10-17 13:31:24 +00:00
Romain Quetiez
dd61cd1697 Portal: enable adding dependent attributes in the request creation form -reintegrated from trunk
SVN:1.2.1[2275]
2012-10-17 12:56:41 +00:00
Romain Quetiez
dd0c22708c Portal: enable adding dependent attributes in the request creation form -reintegrated from trunk
SVN:1.2.1[2272]
2012-10-17 12:17:53 +00:00
Romain Quetiez
b6f6e7a1ff Fixed issue in the portal: the list of opened requests and closed request where messed up when pagination was activated on both lists -reintegrated from trunk
SVN:1.2.1[2269]
2012-10-17 09:13:24 +00:00
Romain Quetiez
db640fde59 CSV import: added a flag to disable the history tab (too long to display, when the feature is heavily used), reintegrated from trunk
SVN:1.2.1[2266]
2012-10-16 14:47:57 +00:00
Romain Quetiez
aa9933a6b3 #585 Error in CSV export (from a search result), some occurrences could still be found in UI.php, see change [2167] in trunk
SVN:1.2.1[2177]
2012-09-11 14:42:21 +00:00
Denis Flaven
7a9d70d15b Improved Japanese Localization, thanks to Shoji Seki
SVN:1.2.1[2173]
2012-09-10 09:52:10 +00:00
Denis Flaven
cd33335401 Improved Japanese Localization, thanks to Shoji Seki
SVN:1.2.1[2172]
2012-09-10 09:50:35 +00:00
Denis Flaven
9755af9b7b Bug fix: properly export boolean attributes to XML (a value of false was creating an empty XML tag)
SVN:1.2.1[2153]
2012-08-23 14:41:16 +00:00
Denis Flaven
5edf6ee43f Implemented Track #582: "stable name" for synchro_data_xxx tables
SVN:1.2.1[2135]
2012-07-25 14:43:42 +00:00
Romain Quetiez
00176a7f71 Fixed issue (seen at first login for a given user or in case of internal error: warning - preg_match_all...) revealed by the very recent change 2118
SVN:1.2.1[2119]
2012-07-04 08:49:34 +00:00
Erwan Taloc
4f8e62b44a Tranform attributeHTML into Long Text
Change attibute "Body" in EventNotificationEmail class to be displayed as HTML attribute

SVN:1.2.1[2118]
2012-07-03 14:49:18 +00:00
Denis Flaven
d1944c1af3 Bug fix: $this->label(attcode)$ used inside Email Notifications should not contain HTML entities since this not an HTML fragment.
SVN:1.2.1[2116]
2012-06-29 15:10:31 +00:00
Denis Flaven
470397e2fd Bug fix: support [+] button inside linkedsets.. with constraints (cf Revision 1913)
SVN:1.2.1[2115]
2012-06-28 12:15:52 +00:00
Denis Flaven
ea3fe45ce5 Fix for Trac #559: ldap user can login with blank password
SVN:1.2.1[2108]
2012-06-14 16:23:42 +00:00
Denis Flaven
5b39fd372f Updated the test list to take into account Trac #558 (hexadecimal numbers inside strings)
SVN:1.2.1[2105]
2012-06-14 09:26:20 +00:00
Denis Flaven
6bca068bbe Fixed Trac #558: properly parse strings containing hexadecimal sequences (i.e. 'QWERTY0xCUIOP').
Note that for now hexadecimal numbers are parsed but not interpreted properly...

SVN:1.2.1[2102]
2012-06-14 09:14:47 +00:00
Romain Quetiez
4c0150378c Fixed regression (See #556) due to the existence of an overload of the protected API GetUserOrgs
SVN:1.2.1[2099]
2012-06-14 07:40:41 +00:00
Romain Quetiez
be4d017f4c #556 Continuation (suppressed a warning)
SVN:1.2.1[2082]
2012-06-05 15:38:39 +00:00
Romain Quetiez
ffd816038d #556 Reworked the caching of user rights data (really too slow for > 1000 users)
SVN:1.2.1[2081]
2012-06-05 15:22:25 +00:00
Denis Flaven
9818214ec8 Protects against too long strings when logging web services events
SVN:1.2.1[1962]
2012-04-19 11:18:41 +00:00
Romain Quetiez
f115e0b120 Fixed bug on the export for Excel: time is given in am-pm format (there is no way to know wether it is in the morning or the afternoon)
SVN:1.2.1[1945]
2012-04-06 09:32:00 +00:00
Denis Flaven
10b81f0569 Properly log-off (and report the issue in the log) in case we fail to create a user during the CAS Synchro
SVN:1.2.1[1941]
2012-04-04 10:06:43 +00:00
Romain Quetiez
3d5c05f6d4 Updated schema.php to add web link to link class on linked set attributes
SVN:1.2.1[1938]
2012-04-03 11:25:41 +00:00
Romain Quetiez
46c71fcefc #540 Data synchro: the option "write if empty" was not implemented
SVN:1.2.1[1932]
2012-03-29 13:28:40 +00:00
Denis Flaven
198898ada4 Bug fix: to do not try to access a DataSource while it's being deleted
SVN:1.2.1[1930]
2012-03-27 11:32:51 +00:00
Denis Flaven
42f355a592 CAS integration. Done.
SVN:1.2.1[1920]
2012-03-22 15:29:53 +00:00
Denis Flaven
ab1fc4b1b5 CAS integration:
- regression fix: support patterns for the MemberOf groups filtering
- activate/de-activate the profiles synchronization using the 'cas_update_profiles' configuration flag
- provide default profile(s) when creating a new user from CAS, only if no match is found for assigning profiles from the CAS MemberOf group(s).
....

SVN:1.2.1[1918]
2012-03-22 15:14:49 +00:00
Denis Flaven
2273e2dbaa Don't trigger a full search when the entered text is empty !
SVN:1.2.1[1866]
2012-02-21 14:09:21 +00:00
Denis Flaven
68412f53a4 Typo!
SVN:1.2.1[1865]
2012-02-21 14:07:40 +00:00
Denis Flaven
7c7b657d71 Bug fix: Reset the URLMaker context after generating the notifications
SVN:1.2.1[1864]
2012-02-21 14:07:12 +00:00
Denis Flaven
42dc240aac Creating the 1.2.1 branch for maintenance purposes
SVN:1.2.1[1844]
2012-02-07 09:26:12 +00:00
45 changed files with 3522 additions and 2686 deletions

View File

@@ -597,12 +597,12 @@ class UserRightsProfile extends UserRightsAddOnAPI
}
protected $m_aAdmins; // id of users being linked to the well-known admin profile
protected $m_aPortalUsers; // id of users being linked to the well-known admin profile
protected $m_aAdmins = array(); // id -> bool, true if the user has the well-known admin profile
protected $m_aPortalUsers = array(); // id -> bool, true if the user has the well-known portal user profile
protected $m_aProfiles; // id -> object
protected $m_aUserProfiles; // userid,profileid -> object
protected $m_aUserOrgs; // userid -> orgid
protected $m_aUserProfiles = array(); // userid,profileid -> object
protected $m_aUserOrgs = array(); // userid -> array of orgid
// Those arrays could be completed on demand (inheriting parent permissions)
protected $m_aClassActionGrants = null; // profile, class, action -> actiongrantid (or false if NO, or null/missing if undefined)
@@ -611,20 +611,64 @@ class UserRightsProfile extends UserRightsAddOnAPI
// Built on demand, could be optimized if necessary (doing a query for each attribute that needs to be read)
protected $m_aObjectActionGrants = array();
/**
* Read and cache organizations allowed to the given user
*
* @param oUser
* @param sClass -not used here but can be used in overloads
*/
protected function GetUserOrgs($oUser, $sClass)
{
return @$this->m_aUserOrgs[$oUser->GetKey()];
$iUser = $oUser->GetKey();
if (!array_key_exists($iUser, $this->m_aUserOrgs))
{
$oSearch = new DBObjectSearch('URP_UserOrg');
$oSearch->AllowAllData();
$oCondition = new BinaryExpression(new FieldExpression('userid'), '=', new VariableExpression('userid'));
$oSearch->AddConditionExpression($oCondition);
$this->m_aUserOrgs[$iUser] = array();
$oUserOrgSet = new DBObjectSet($oSearch, array(), array('userid' => $iUser));
while ($oUserOrg = $oUserOrgSet->Fetch())
{
$this->m_aUserOrgs[$iUser][] = $oUserOrg->Get('allowed_org_id');
}
}
return $this->m_aUserOrgs[$iUser];
}
/**
* Read and cache profiles of the given user
*/
protected function GetUserProfiles($iUser)
{
if (!array_key_exists($iUser, $this->m_aUserProfiles))
{
$oSearch = new DBObjectSearch('URP_UserProfile');
$oSearch->AllowAllData();
$oCondition = new BinaryExpression(new FieldExpression('userid'), '=', new VariableExpression('userid'));
$oSearch->AddConditionExpression($oCondition);
$this->m_aUserProfiles[$iUser] = array();
$oUserProfileSet = new DBObjectSet($oSearch, array(), array('userid' => $iUser));
while ($oUserProfile = $oUserProfileSet->Fetch())
{
$this->m_aUserProfiles[$iUser][$oUserProfile->Get('profileid')] = $oUserProfile;
}
}
return $this->m_aUserProfiles[$iUser];
}
public function ResetCache()
{
// Loaded by Load cache
$this->m_aProfiles = null;
$this->m_aUserProfiles = null;
$this->m_aUserOrgs = null;
$this->m_aUserProfiles = array();
$this->m_aUserOrgs = array();
$this->m_aAdmins = null;
$this->m_aPortalUsers = null;
$this->m_aAdmins = array();
$this->m_aPortalUsers = array();
// Loaded on demand (time consuming as compared to the others)
$this->m_aClassActionGrants = null;
@@ -666,30 +710,6 @@ class UserRightsProfile extends UserRightsAddOnAPI
$this->m_aProfiles[$oProfile->GetKey()] = $oProfile;
}
$oUserProfileSet = new DBObjectSet(DBObjectSearch::FromOQL_AllData("SELECT URP_UserProfile"));
$this->m_aUserProfiles = array();
$this->m_aAdmins = array();
$this->m_aPortalUsers = array();
while ($oUserProfile = $oUserProfileSet->Fetch())
{
$this->m_aUserProfiles[$oUserProfile->Get('userid')][$oUserProfile->Get('profileid')] = $oUserProfile;
if ($oUserProfile->Get('profile') == ADMIN_PROFILE_NAME)
{
$this->m_aAdmins[] = $oUserProfile->Get('userid');
}
elseif ($oUserProfile->Get('profile') == PORTAL_PROFILE_NAME)
{
$this->m_aPortalUsers[] = $oUserProfile->Get('userid');
}
}
$oUserOrgSet = new DBObjectSet(DBObjectSearch::FromOQL_AllData("SELECT URP_UserOrg"));
$this->m_aUserOrgs = array();
while ($oUserOrg = $oUserOrgSet->Fetch())
{
$this->m_aUserOrgs[$oUserOrg->Get('userid')][] = $oUserOrg->Get('allowed_org_id');
}
$this->m_aClassStimulusGrants = array();
$oStimGrantSet = new DBObjectSet(DBObjectSearch::FromOQL_AllData("SELECT URP_StimulusGrant"));
$this->m_aStimGrants = array();
@@ -716,32 +736,45 @@ exit;
public function IsAdministrator($oUser)
{
$this->LoadCache();
if (in_array($oUser->GetKey(), $this->m_aAdmins))
//$this->LoadCache();
$iUser = $oUser->GetKey();
if (!array_key_exists($iUser, $this->m_aAdmins))
{
return true;
}
else
{
return false;
$bIsAdmin = false;
foreach($this->GetUserProfiles($iUser) as $oUserProfile)
{
if ($oUserProfile->Get('profile') == ADMIN_PROFILE_NAME)
{
$bIsAdmin = true;
break;
}
}
$this->m_aAdmins[$iUser] = $bIsAdmin;
}
return $this->m_aAdmins[$iUser];
}
public function IsPortalUser($oUser)
{
$this->LoadCache();
if (in_array($oUser->GetKey(), $this->m_aPortalUsers))
//$this->LoadCache();
$iUser = $oUser->GetKey();
if (!array_key_exists($iUser, $this->m_aPortalUsers))
{
return true;
}
else
{
return false;
$bIsPortalUser = false;
foreach($this->GetUserProfiles($iUser) as $oUserProfile)
{
if ($oUserProfile->Get('profile') == PORTAL_PROFILE_NAME)
{
$bIsPortalUser = true;
break;
}
}
$this->m_aPortalUsers[$iUser] = $bIsPortalUser;
}
return $this->m_aPortalUsers[$iUser];
}
public function GetSelectFilter($oUser, $sClass)
{
$this->LoadCache();
@@ -786,9 +819,9 @@ exit;
// Position the user
//
$aUserOrgs = $this->GetUserOrgs($oUser, $sClass);
if (is_null($aUserOrgs) || count($aUserOrgs) == 0)
if (count($aUserOrgs) == 0)
{
// No position means 'Everywhere'
// No org means 'any org'
return true;
}
@@ -883,33 +916,30 @@ exit;
$iPermission = UR_ALLOWED_NO;
$aAttributes = array();
if (isset($this->m_aUserProfiles[$iUser]))
foreach($this->GetUserProfiles($iUser) as $iProfile => $oProfile)
{
foreach($this->m_aUserProfiles[$iUser] as $iProfile => $oProfile)
$iGrant = $this->GetProfileActionGrant($iProfile, $sClass, $sAction);
if (is_null($iGrant) || !$iGrant)
{
$iGrant = $this->GetProfileActionGrant($iProfile, $sClass, $sAction);
if (is_null($iGrant) || !$iGrant)
continue; // loop to the next profile
}
else
{
$iPermission = UR_ALLOWED_YES;
// update the list of attributes with those allowed for this profile
//
$oSearch = DBObjectSearch::FromOQL_AllData("SELECT URP_AttributeGrant WHERE actiongrantid = :actiongrantid");
$oSet = new DBObjectSet($oSearch, array(), array('actiongrantid' => $iGrant));
$aProfileAttributes = $oSet->GetColumnAsArray('attcode', false);
if (count($aProfileAttributes) == 0)
{
continue; // loop to the next profile
$aAllAttributes = array_keys(MetaModel::ListAttributeDefs($sClass));
$aAttributes = array_merge($aAttributes, $aAllAttributes);
}
else
{
$iPermission = UR_ALLOWED_YES;
// update the list of attributes with those allowed for this profile
//
$oSearch = DBObjectSearch::FromOQL_AllData("SELECT URP_AttributeGrant WHERE actiongrantid = :actiongrantid");
$oSet = new DBObjectSet($oSearch, array(), array('actiongrantid' => $iGrant));
$aProfileAttributes = $oSet->GetColumnAsArray('attcode', false);
if (count($aProfileAttributes) == 0)
{
$aAllAttributes = array_keys(MetaModel::ListAttributeDefs($sClass));
$aAttributes = array_merge($aAttributes, $aAllAttributes);
}
else
{
$aAttributes = array_merge($aAttributes, $aProfileAttributes);
}
$aAttributes = array_merge($aAttributes, $aProfileAttributes);
}
}
}
@@ -974,16 +1004,13 @@ exit;
// Note: The object set is ignored because it was interesting to optimize for huge data sets
// and acceptable to consider only the root class of the object set
$iPermission = UR_ALLOWED_NO;
if (isset($this->m_aUserProfiles[$iUser]))
foreach($this->GetUserProfiles($iUser) as $iProfile => $oProfile)
{
foreach($this->m_aUserProfiles[$iUser] as $iProfile => $oProfile)
$oGrantRecord = $this->GetClassStimulusGrant($iProfile, $sClass, $sStimulusCode);
if (!is_null($oGrantRecord))
{
$oGrantRecord = $this->GetClassStimulusGrant($iProfile, $sClass, $sStimulusCode);
if (!is_null($oGrantRecord))
{
// no need to fetch the record, we've requested the records having permission = 'yes'
$iPermission = UR_ALLOWED_YES;
}
// no need to fetch the record, we've requested the records having permission = 'yes'
$iPermission = UR_ALLOWED_YES;
}
}
return $iPermission;

View File

@@ -1365,7 +1365,7 @@ EOF
{
$iDate = AttributeDateTime::GetAsUnixSeconds($oObj->Get($sAttCode));
$aRow[] = '<td>'.date('Y-m-d', $iDate).'</td>';
$aRow[] = '<td>'.date('h:i:s', $iDate).'</td>';
$aRow[] = '<td>'.date('H:i:s', $iDate).'</td>';
}
else
{

View File

@@ -348,7 +348,11 @@ class DisplayBlock
$aGroupBy = array();
$sLabels = array();
$iTotalCount = $this->m_oSet->Count();
while($oObj = $this->m_oSet->Fetch())
$oTmpSet = clone $this->m_oSet;
// Speed up the load, load only the needed field to group on
$sAlias = $oTmpSet->GetFilter()->GetClassAlias();
$oTmpSet->OptimizeColumnLoad(array($sAlias => array($sGroupByField)));
while($oObj = $oTmpSet->Fetch())
{
if (isset($aExtraParams['group_by_expr']))
{
@@ -621,7 +625,7 @@ class DisplayBlock
$this->m_oSet = new CMDBObjectSet($this->m_oFilter, array(), $aQueryParams);
}
$iCount = $this->m_oSet->Count();
$sHyperlink = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?operation=search&'.$oAppContext->GetForLink().'&filter='.$this->m_oFilter->serialize();
$sHyperlink = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?operation=search&'.$oAppContext->GetForLink().'&filter='.urlencode($this->m_oFilter->serialize());
$sHtml .= '<p><a class="actions" href="'.$sHyperlink.'">';
$sHtml .= MetaModel::GetClassIcon($sClass, true, 'float;left;margin-right:10px;');
$sHtml .= MetaModel::GetName($sClass).': '.$iCount.'</a></p>';
@@ -682,7 +686,7 @@ class DisplayBlock
}
else
{
$sHyperlink = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?operation=search&'.$oAppContext->GetForLink().'&filter='.$oFilter->serialize();
$sHyperlink = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?operation=search&'.$oAppContext->GetForLink().'&filter='.urlencode($oFilter->serialize());
$aCounts[$sStateValue] = "<a href=\"$sHyperlink\">{$aCounts[$sStateValue]}</a>";
}
}
@@ -691,7 +695,7 @@ class DisplayBlock
$sHtml .= '<tr><td>'.implode('</td><td>', $aCounts).'</td></tr></table></div>';
// Title & summary
$iCount = $this->m_oSet->Count();
$sHyperlink = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?operation=search&'.$oAppContext->GetForLink().'&filter='.$this->m_oFilter->serialize();
$sHyperlink = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?operation=search&'.$oAppContext->GetForLink().'&filter='.urlencode($this->m_oFilter->serialize());
$sHtml .= '<h1>'.Dict::S(str_replace('_', ':', $sTitle)).'</h1>';
$sHtml .= '<a class="summary" href="'.$sHyperlink.'">'.Dict::Format(str_replace('_', ':', $sLabel), $iCount).'</a>';
break;
@@ -746,7 +750,7 @@ EOF
$sHtml .= "<div id=\"my_chart_{$iChartCounter}\">If the chart does not display, <a href=\"http://get.adobe.com/flash/\" target=\"_blank\">install Flash</a></div>\n";
$oPage->add_script("function ofc_resize(left, width, top, height) { /* do nothing special */ }");
$oPage->add_ready_script("swfobject.embedSWF(\"../images/open-flash-chart.swf\", \"my_chart_{$iChartCounter}\", \"100%\", \"300\",\"9.0.0\", \"expressInstall.swf\",
{\"data-file\":\"".urlencode(utils::GetAbsoluteUrlAppRoot()."pages/ajax.render.php?operation=open_flash_chart&params[group_by]=$sGroupBy{$sGroupByExpr}&params[chart_type]=$sChartType&params[chart_title]=$sTitle&id=$sId&filter=".$sFilter)."\"}, {wmode: 'transparent'} );\n");
{\"data-file\":\"".urlencode(utils::GetAbsoluteUrlAppRoot()."pages/ajax.render.php?operation=open_flash_chart&params[group_by]=$sGroupBy{$sGroupByExpr}&params[chart_type]=$sChartType&params[chart_title]=$sTitle&id=$sId&filter=".urlencode($sFilter))."\"}, {wmode: 'transparent'} );\n");
$iChartCounter++;
if (isset($aExtraParams['group_by']))
{
@@ -1136,7 +1140,7 @@ class MenuBlock extends DisplayBlock
// Static menus: Email this page & CSV Export
$sUrl = ApplicationContext::MakeObjectUrl($sClass, $id);
$aActions['UI:Menu:EMail'] = array ('label' => Dict::S('UI:Menu:EMail'), 'url' => "mailto:?subject=".urlencode($oObj->GetRawName())."&body=".urlencode($sUrl));
$aActions['UI:Menu:CSVExport'] = array ('label' => Dict::S('UI:Menu:CSVExport'), 'url' => "{$sRootUrl}pages/$sUIPage?operation=search&filter=$sFilter&format=csv{$sContext}");
$aActions['UI:Menu:CSVExport'] = array ('label' => Dict::S('UI:Menu:CSVExport'), 'url' => "{$sRootUrl}pages/$sUIPage?operation=search&filter=".urlencode($sFilter)."&format=csv{$sContext}");
}
$this->AddMenuSeparator($aActions);
foreach (MetaModel::EnumPlugins('iApplicationUIExtension') as $oExtensionInstance)
@@ -1170,12 +1174,15 @@ class MenuBlock extends DisplayBlock
{
// many objects in the set, possible actions are: new / modify all / delete all
if ($bIsModifyAllowed) { $aActions['UI:Menu:New'] = array ('label' => Dict::S('UI:Menu:New'), 'url' => "{$sRootUrl}pages/$sUIPage?operation=new&class=$sClass{$sContext}{$sDefault}"); }
if ($bIsBulkModifyAllowed) { $aActions['UI:Menu:ModifyAll'] = array ('label' => Dict::S('UI:Menu:ModifyAll'), 'url' => "{$sRootUrl}pages/$sUIPage?operation=select_for_modify_all&class=$sClass&filter=$sFilter{$sContext}"); }
if ($bIsBulkDeleteAllowed) { $aActions['UI:Menu:BulkDelete'] = array ('label' => Dict::S('UI:Menu:BulkDelete'), 'url' => "{$sRootUrl}pages/$sUIPage?operation=select_for_deletion&filter=$sFilter{$sContext}"); }
if ($bIsBulkModifyAllowed) { $aActions['UI:Menu:ModifyAll'] = array ('label' => Dict::S('UI:Menu:ModifyAll'), 'url' => "{$sRootUrl}pages/$sUIPage?operation=select_for_modify_all&class=$sClass&filter=".urlencode($sFilter)."{$sContext}"); }
if ($bIsBulkDeleteAllowed) { $aActions['UI:Menu:BulkDelete'] = array ('label' => Dict::S('UI:Menu:BulkDelete'), 'url' => "{$sRootUrl}pages/$sUIPage?operation=select_for_deletion&filter=".urlencode($sFilter)."{$sContext}"); }
// Stimuli
$aStates = MetaModel::EnumStates($sClass);
if (count($aStates) > 0)
// Do not perform time consuming computations if there are too may objects in the list
$iLimit = MetaModel::GetConfig()->Get('complex_actions_limit');
if ((count($aStates) > 0) && (($iLimit == 0) || ($oSet->Count() < $iLimit)))
{
// Life cycle actions may be available... if all objects are in the same state
$oSet->Rewind();
@@ -1202,7 +1209,7 @@ class MenuBlock extends DisplayBlock
{
case UR_ALLOWED_YES:
case UR_ALLOWED_DEPENDS:
$aActions[$sStimulusCode] = array('label' => $aStimuli[$sStimulusCode]->GetLabel(), 'url' => "{$sRootUrl}pages/UI.php?operation=select_bulk_stimulus&stimulus=$sStimulusCode&state=$sState&class=$sClass&filter=$sFilter{$sContext}");
$aActions[$sStimulusCode] = array('label' => $aStimuli[$sStimulusCode]->GetLabel(), 'url' => "{$sRootUrl}pages/UI.php?operation=select_bulk_stimulus&stimulus=$sStimulusCode&state=$sState&class=$sClass&filter=".urlencode($sFilter)."{$sContext}");
break;
default:
@@ -1214,8 +1221,8 @@ class MenuBlock extends DisplayBlock
}
$this->AddMenuSeparator($aActions);
$sUrl = utils::GetAbsoluteUrlAppRoot();
$aActions['UI:Menu:EMail'] = array ('label' => Dict::S('UI:Menu:EMail'), 'url' => "mailto:?subject=$sFilterDesc&body=".urlencode("{$sUrl}pages/$sUIPage?operation=search&filter=$sFilter{$sContext}"));
$aActions['UI:Menu:CSVExport'] = array ('label' => Dict::S('UI:Menu:CSVExport'), 'url' => "{$sRootUrl}pages/$sUIPage?operation=search&filter=$sFilter&format=csv{$sContext}");
$aActions['UI:Menu:EMail'] = array ('label' => Dict::S('UI:Menu:EMail'), 'url' => "mailto:?subject=$sFilterDesc&body=".urlencode("{$sUrl}pages/$sUIPage?operation=search&filter=".urlencode($sFilter)."{$sContext}"));
$aActions['UI:Menu:CSVExport'] = array ('label' => Dict::S('UI:Menu:CSVExport'), 'url' => "{$sRootUrl}pages/$sUIPage?operation=search&filter=".urlencode($sFilter)."&format=csv{$sContext}");
}
$this->AddMenuSeparator($aActions);
foreach (MetaModel::EnumPlugins('iApplicationUIExtension') as $oExtensionInstance)

View File

@@ -212,8 +212,10 @@ EOF
}
EOF
);
}
// For Wizard helper to process the ajax replies
$this->add('<div id="ajax_content"></div>');
}
public function SetCurrentTab($sTabLabel = '')
{
@@ -273,13 +275,9 @@ EOF
{
// Home-made and very limited display of an object set
//
//$oSet->Seek(0);// juste pour que le warning soit moins crado
//$oSet->Fetch();// juste pour que le warning soit moins crado
//
$this->add("<div id=\"listOf$sClass\">\n");
cmdbAbstractObject::DisplaySet($this, $oSet, array('currentId' => "listOf$sClass", 'menu' => false, 'zlist' => false, 'extra_fields' => implode(',', $aZList)));
$sUniqueId = $sClass.$this->GetUniqueId();
$this->add("<div id=\"$sUniqueId\">\n"); // The id here MUST be the same as currentId, otherwise the pagination will be broken
cmdbAbstractObject::DisplaySet($this, $oSet, array('currentId' => $sUniqueId, 'menu' => false, 'zlist' => false, 'extra_fields' => implode(',', $aZList)));
$this->add("</div>\n");
}
else

View File

@@ -120,7 +120,7 @@ class UIExtKeyWidget
else
{
$sWizHelper = 'oWizardHelper'.$sFormPrefix;
$sWizHelperJSON = $sWizHelper.'.ToJSON()';
$sWizHelperJSON = $sWizHelper.'.UpdateWizardToJSON()';
}
if (is_null($oAllowedValues))
{

View File

@@ -305,7 +305,8 @@ class ActionEmail extends ActionNotification
ApplicationContext::SetUrlMakerClass($sPreviousUrlMaker);
throw $e;
}
ApplicationContext::SetUrlMakerClass($sPreviousUrlMaker);
if (!is_null($oLog))
{
// Note: we have to secure this because those values are calculated

View File

@@ -1085,6 +1085,11 @@ class AttributeBoolean extends AttributeInteger
if ($value) return 1;
return 0;
}
public function GetAsXML($sValue, $oHostObject = null)
{
return $sValue ? '1' : '0';
}
}
/**
@@ -1829,7 +1834,7 @@ class AttributeCaseLog extends AttributeLongText
*
* @package iTopORM
*/
class AttributeHTML extends AttributeText
class AttributeHTML extends AttributeLongText
{
public function GetEditClass() {return "HTML";}
@@ -2308,6 +2313,7 @@ class AttributeDateTime extends AttributeDBField
default:
$oNewCondition = parent::GetSmartConditionExpression($sSearchText, $oField, $aParams);
}
return $oNewCondition;
@@ -3290,16 +3296,26 @@ class AttributeOneWayPassword extends AttributeDefinition
}
// Indexed array having two dimensions
class AttributeTable extends AttributeText
class AttributeTable extends AttributeDBField
{
public function GetEditClass() {return "Text";}
protected function GetSQLCol() {return "TEXT";}
public function GetEditClass() {return "Table";}
protected function GetSQLCol() {return "LONGTEXT";}
public function GetMaxSize()
{
return null;
}
public function GetNullValue()
{
return array();
}
public function IsNull($proposedValue)
{
return (count($proposedValue) == 0);
}
// Facilitate things: allow the user to Set the value from a string
public function MakeRealValue($proposedValue, $oHostObj)
{
@@ -3362,13 +3378,39 @@ class AttributeTable extends AttributeText
$sRes .= "</TABLE>";
return $sRes;
}
public function GetAsCSV($sValue, $sSeparator = ',', $sTextQualifier = '"', $oHostObject = null)
{
// Not implemented
return '';
}
public function GetAsXML($value, $oHostObject = null)
{
if (count($value) == 0)
{
return "";
}
$sRes = "";
foreach($value as $iRow => $aRawData)
{
$sRes .= "<row>";
foreach ($aRawData as $iCol => $cell)
{
$sCell = Str::pure2xml((string)$cell);
$sRes .= "<cell icol=\"$iCol\">$sCell</cell>";
}
$sRes .= "</row>";
}
return $sRes;
}
}
// The PHP value is a hash array, it is stored as a TEXT column
class AttributePropertySet extends AttributeTable
{
public function GetEditClass() {return "Text";}
protected function GetSQLCol() {return "TEXT";}
public function GetEditClass() {return "PropertySet";}
// Facilitate things: allow the user to Set the value from a string
public function MakeRealValue($proposedValue, $oHostObj)
@@ -3395,6 +3437,10 @@ class AttributePropertySet extends AttributeTable
$sRes .= "<TBODY>";
foreach($value as $sProperty => $sValue)
{
if ($sProperty == 'auth_pwd')
{
$sValue = '*****';
}
$sRes .= "<TR>";
$sCell = str_replace("\n", "<br>\n", Str::pure2html((string)$sValue));
$sRes .= "<TD class=\"label\">$sProperty</TD><TD>$sCell</TD>";
@@ -3404,6 +3450,53 @@ class AttributePropertySet extends AttributeTable
$sRes .= "</TABLE>";
return $sRes;
}
public function GetAsCSV($value, $sSeparator = ',', $sTextQualifier = '"', $oHostObject = null)
{
if (count($value) == 0)
{
return "";
}
$aRes = array();
foreach($value as $sProperty => $sValue)
{
if ($sProperty == 'auth_pwd')
{
$sValue = '*****';
}
$sFrom = array(',', '=');
$sTo = array('\,', '\=');
$aRes[] = $sProperty.'='.str_replace($sFrom, $sTo, (string)$sValue);
}
$sRaw = implode(',', $aRes);
$sFrom = array("\r\n", $sTextQualifier);
$sTo = array("\n", $sTextQualifier.$sTextQualifier);
$sEscaped = str_replace($sFrom, $sTo, $sRaw);
return $sTextQualifier.$sEscaped.$sTextQualifier;
}
public function GetAsXML($value, $oHostObject = null)
{
if (count($value) == 0)
{
return "";
}
$sRes = "";
foreach($value as $sProperty => $sValue)
{
if ($sProperty == 'auth_pwd')
{
$sValue = '*****';
}
$sRes .= "<property id=\"$sProperty\">";
$sRes .= Str::pure2xml((string)$sValue);
$sRes .= "</property>";
}
return $sRes;
}
}
/**

View File

@@ -401,7 +401,13 @@ class BulkChange
if ($sAttCode == 'id') continue;
$oAttDef = MetaModel::GetAttributeDef($this->m_sClass, $sAttCode);
if ($oAttDef->IsLinkSet() && $oAttDef->IsIndirect())
$aReasons = array();
$iFlags = $oTargetObj->GetAttributeFlags($sAttCode, $aReasons);
if ( (($iFlags & OPT_ATT_READONLY) == OPT_ATT_READONLY) && ( $oTargetObj->Get($sAttCode) != $aRowData[$iCol]) )
{
$aErrors[$sAttCode] = "the attribute '$sAttCode' is read-only and cannot be modified (current value: ".$oTargetObj->Get($sAttCode).", proposed value: {$aRowData[$iCol]}).";
}
else if ($oAttDef->IsLinkSet() && $oAttDef->IsIndirect())
{
try
{

View File

@@ -197,6 +197,14 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => false,
),
'csv_import_history_display' => array(
'type' => 'bool',
'description' => 'Display the history tab in the import wizard',
'default' => true,
'value' => true,
'source_of_value' => '',
'show_in_conf_sample' => true,
),
'access_mode' => array(
'type' => 'integer',
'description' => 'Combination of flags (ACCESS_USER_WRITE | ACCESS_ADMIN_WRITE, or ACCESS_FULL)',
@@ -400,6 +408,15 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => true,
),
'cas_update_profiles' => array(
'type' => 'bool',
'description' => 'Whether or not to update the profiles of an existing user from the CAS information',
// examples... not used (nor 'description')
'default' => 0,
'value' => 0,
'source_of_value' => '',
'show_in_conf_sample' => true,
),
'cas_profile_pattern' => array(
'type' => 'string',
'description' => 'A regular expression pattern to extract the name of the iTop profile from the name of an LDAP/CAS group',
@@ -409,6 +426,15 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => true,
),
'cas_default_profiles' => array(
'type' => 'string',
'description' => 'A semi-colon separated list of iTop Profiles to use when creating a new user if no profile is retrieved from CAS',
// examples... not used (nor 'description')
'default' => 'Portal user',
'value' => 'Portal user',
'source_of_value' => '',
'show_in_conf_sample' => true,
),
'cas_debug' => array(
'type' => 'bool',
'description' => 'Activate the CAS debug',
@@ -445,6 +471,15 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => true,
),
'complex_actions_limit' => array(
'type' => 'integer',
'description' => 'Display the "actions" menu items that require long computation only if the list of objects is contains less objects than this number (0 means no limit)',
// examples... not used
'default' => 50,
'value' => 50,
'source_of_value' => '',
'show_in_conf_sample' => false,
),
);
public function IsProperty($sPropCode)

View File

@@ -302,30 +302,53 @@ abstract class DBObject
$this->Reload();
}
if ($oAttDef->IsExternalKey() && is_object($value))
if ($oAttDef->IsExternalKey())
{
// Setting an external key with a whole object (instead of just an ID)
// let's initialize also the external fields that depend on it
// (useful when building objects in memory and not from a query)
if ( (get_class($value) != $oAttDef->GetTargetClass()) && (!is_subclass_of($value, $oAttDef->GetTargetClass())))
if (is_object($value))
{
throw new CoreUnexpectedValue("Trying to set the value of '$sAttCode', to an object of class '".get_class($value)."', whereas it's an ExtKey to '".$oAttDef->GetTargetClass()."'. Ignored");
// Setting an external key with a whole object (instead of just an ID)
// let's initialize also the external fields that depend on it
// (useful when building objects in memory and not from a query)
if ( (get_class($value) != $oAttDef->GetTargetClass()) && (!is_subclass_of($value, $oAttDef->GetTargetClass())))
{
throw new CoreUnexpectedValue("Trying to set the value of '$sAttCode', to an object of class '".get_class($value)."', whereas it's an ExtKey to '".$oAttDef->GetTargetClass()."'. Ignored");
}
else
{
$this->m_aCurrValues[$sAttCode] = $value->GetKey();
foreach(MetaModel::ListAttributeDefs(get_class($this)) as $sCode => $oDef)
{
if ($oDef->IsExternalField() && ($oDef->GetKeyAttCode() == $sAttCode))
{
$this->m_aCurrValues[$sCode] = $value->Get($oDef->GetExtAttCode());
}
}
$this->m_aCurrValues[$sAttCode.'_friendlyname'] = $value->GetName();
}
}
else
else if ($this->m_aCurrValues[$sAttCode] != $value)
{
// The object has changed, reset caches
$this->m_bCheckStatus = null;
$this->m_aAsArgs = null;
$this->m_aCurrValues[$sAttCode] = $value->GetKey();
// If the external key changed, invalidate all the external fields (and friendly name) related to this external key
$this->m_aCurrValues[$sAttCode] = $value;
foreach(MetaModel::ListAttributeDefs(get_class($this)) as $sCode => $oDef)
{
if ($oDef->IsExternalField() && ($oDef->GetKeyAttCode() == $sAttCode))
{
$this->m_aCurrValues[$sCode] = $value->Get($oDef->GetExtAttCode());
unset($this->m_aLoadedAtt[$sCode]);
$this->m_aCurrValues[$sCode] = null;
}
}
$this->m_aCurrValues[$sAttCode.'_friendlyname'] = null;
unset($this->m_aLoadedAtt[$sAttCode.'_friendlyname']);
}
// The object has changed, reset caches
$this->m_bCheckStatus = null;
$this->m_aAsArgs = null;
// Make sure we do not reload it anymore... before saving it
$this->RegisterAsDirty();
return;
}
if(!$oAttDef->IsScalar() && !is_object($value))
@@ -400,10 +423,60 @@ abstract class DBObject
{
throw new CoreException("Unknown attribute code '$sAttCode' for the class ".get_class($this));
}
if ($this->m_bIsInDB && !isset($this->m_aLoadedAtt[$sAttCode]) && !$this->m_bDirty)
if ($this->m_bIsInDB && !isset($this->m_aLoadedAtt[$sAttCode]))
{
// #@# non-scalar attributes.... handle that differently
$this->Reload();
if (!$this->m_bDirty)
{
$this->Reload();
}
else
{
// If the missing attribute is an external fields (or a friendlyname), try to selectively reload it
// from the value of its external key... and reload the related external fields & friendlyname as well
$sTargetClass = '';
$iCurrKey = 0;
$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttCode);
if ($oAttDef->IsExternalField())
{
$sKeyAttCode = $oAttDef->GetKeyAttCode();
$iCurrKey = $this->m_aCurrValues[$oAttDef->GetKeyAttCode()];
$sTargetClass= $oAttDef->GetTargetClass();
}
else if ($oAttDef instanceof AttributeFriendlyName)
{
$sKeyAttCode = $oAttDef->GetKeyAttCode();
$oKeyAttDef = MetaModel::GetAttributeDef(get_class($this), $sKeyAttCode);
$iCurrKey = $this->m_aCurrValues[$oAttDef->GetKeyAttCode()];
$sTargetClass = $oKeyAttDef->GetTargetClass();
}
if (($sTargetClass != '') && ($iCurrKey != 0))
{
$oTargetObj = MetaModel::GetObject($sTargetClass, $iCurrKey, false);
if (is_object($oTargetObj))
{
foreach(MetaModel::ListAttributeDefs(get_class($this)) as $sCode => $oDef)
{
if ($oDef->IsExternalField() && ($oDef->GetKeyAttCode() == $sKeyAttCode))
{
$this->m_aLoadedAtt[$sCode] = true;
$this->m_aCurrValues[$sCode] = $oTargetObj->Get($oDef->GetExtAttCode());
}
}
if ($oAttDef instanceof AttributeFriendlyName)
{
$this->m_aLoadedAtt[$sAttCode] = true;
$this->m_aCurrValues[$sAttCode] = $oTargetObj->GetName();
}
else
{
$this->m_aLoadedAtt[$sKeyAttCode.'_friendlyname'] = true;
$this->m_aCurrValues[$sKeyAttCode.'_friendlyname'] = $oTargetObj->GetName();
}
}
}
}
}
$value = $this->m_aCurrValues[$sAttCode];
if ($value instanceof DBObjectSet)
@@ -981,30 +1054,35 @@ abstract class DBObject
$aDelta = array();
foreach ($aProposal as $sAtt => $proposedValue)
{
if (!array_key_exists($sAtt, $this->m_aOrigValues))
$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAtt);
// Ignore external fields and friendly names that change only as a consequence of modifying another field
if ((!$oAttDef->IsExternalField() && !($oAttDef instanceof AttributeFriendlyName)))
{
// The value was not set
$aDelta[$sAtt] = $proposedValue;
}
elseif(is_object($proposedValue))
{
$oLinkAttDef = MetaModel::GetAttributeDef(get_class($this), $sAtt);
// The value is an object, the comparison is not strict
if (!$oLinkAttDef->Equals($proposedValue, $this->m_aOrigValues[$sAtt]))
if (!array_key_exists($sAtt, $this->m_aOrigValues))
{
// The value was not set
$aDelta[$sAtt] = $proposedValue;
}
}
else
{
// The value is a scalar, the comparison must be 100% strict
if($this->m_aOrigValues[$sAtt] !== $proposedValue)
{
//echo "$sAtt:<pre>\n";
//var_dump($this->m_aOrigValues[$sAtt]);
//var_dump($proposedValue);
//echo "</pre>\n";
$aDelta[$sAtt] = $proposedValue;
elseif(is_object($proposedValue))
{
$oLinkAttDef = MetaModel::GetAttributeDef(get_class($this), $sAtt);
// The value is an object, the comparison is not strict
if (!$oLinkAttDef->Equals($proposedValue, $this->m_aOrigValues[$sAtt]))
{
$aDelta[$sAtt] = $proposedValue;
}
}
else
{
// The value is a scalar, the comparison must be 100% strict
if($this->m_aOrigValues[$sAtt] !== $proposedValue)
{
//echo "$sAtt:<pre>\n";
//var_dump($this->m_aOrigValues[$sAtt]);
//var_dump($proposedValue);
//echo "</pre>\n";
$aDelta[$sAtt] = $proposedValue;
}
}
}
}
@@ -1656,7 +1734,7 @@ abstract class DBObject
// #@# Note: This has been proven to be quite slow, this can slow down bulk load
$sAsHtml = $this->GetAsHtml($sAttCode);
$aScalarArgs[$sArgName.'->html('.$sAttCode.')'] = $sAsHtml;
$aScalarArgs[$sArgName.'->label('.$sAttCode.')'] = strip_tags($sAsHtml);
$aScalarArgs[$sArgName.'->label('.$sAttCode.')'] = $this->GetEditValue($sAttCode); // "Nice" display value, but without HTML tags and entities
}
// Do something for case logs... quick N' dirty...
if ($aScalarArgs[$sArgName.'->'.$sAttCode] instanceof ormCaseLog)

View File

@@ -174,7 +174,7 @@ class EventNotificationEmail extends EventNotification
MetaModel::Init_AddAttribute(new AttributeText("bcc", array("allowed_values"=>null, "sql"=>"bcc", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeText("from", array("allowed_values"=>null, "sql"=>"from", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeText("subject", array("allowed_values"=>null, "sql"=>"subject", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeText("body", array("allowed_values"=>null, "sql"=>"body", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeHTML("body", array("allowed_values"=>null, "sql"=>"body", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('date', 'userinfo', 'message', 'trigger_id', 'action_id', 'object_id', 'to', 'cc', 'bcc', 'from', 'subject', 'body')); // Attributes to be displayed for the complete details

View File

@@ -4328,7 +4328,15 @@ if (!array_key_exists($sAttCode, self::$m_aAttribDefs[$sClass]))
public static function MakeSingleRow($sClass, $iKey, $bMustBeFound = true, $bAllowAllData = false)
{
if (!array_key_exists($sClass, self::$aQueryCacheGetObject))
// Build the query cache signature
//
$sQuerySign = $sClass;
if($bAllowAllData)
{
$sQuerySign .= '_all_';
}
if (!array_key_exists($sQuerySign, self::$aQueryCacheGetObject))
{
// NOTE: Quick and VERY dirty caching mechanism which relies on
// the fact that the string '987654321' will never appear in the
@@ -4343,13 +4351,13 @@ if (!array_key_exists($sAttCode, self::$m_aAttribDefs[$sClass]))
}
$sSQL = self::MakeSelectQuery($oFilter);
self::$aQueryCacheGetObject[$sClass] = $sSQL;
self::$aQueryCacheGetObjectHits[$sClass] = 0;
self::$aQueryCacheGetObject[$sQuerySign] = $sSQL;
self::$aQueryCacheGetObjectHits[$sQuerySign] = 0;
}
else
{
$sSQL = self::$aQueryCacheGetObject[$sClass];
self::$aQueryCacheGetObjectHits[$sClass] += 1;
$sSQL = self::$aQueryCacheGetObject[$sQuerySign];
self::$aQueryCacheGetObjectHits[$sQuerySign] += 1;
// echo " -load $sClass/$iKey- ".self::$aQueryCacheGetObjectHits[$sClass]."<br/>\n";
}
$sSQL = str_replace(CMDBSource::Quote(987654321), CMDBSource::Quote($iKey), $sSQL);

View File

@@ -168,7 +168,7 @@ class OQLLexerRaw
'/\GABOVE STRICT/ ',
'/\GNOT ABOVE/ ',
'/\GNOT ABOVE STRICT/ ',
'/\G[0-9]+|0x[0-9a-fA-F]+/ ',
'/\G(0x[0-9a-fA-F]+|[0-9]+)/ ',
'/\G\"([^\\\\\"]|\\\\\"|\\\\\\\\)*\"|'.chr(94).chr(39).'([^\\\\'.chr(39).']|\\\\'.chr(39).'|\\\\\\\\)*'.chr(39).'/ ',
'/\G([_a-zA-Z][_a-zA-Z0-9]*|`[^`]+`)/ ',
'/\G:([_a-zA-Z][_a-zA-Z0-9]*->[_a-zA-Z][_a-zA-Z0-9]*|[_a-zA-Z][_a-zA-Z0-9]*)/ ',

View File

@@ -140,7 +140,23 @@ above = "ABOVE"
above_strict = "ABOVE STRICT"
not_above = "NOT ABOVE"
not_above_strict = "NOT ABOVE STRICT"
numval = /[0-9]+|0x[0-9a-fA-F]+/
//
// WARNING: there seems to be a bug in the Lexer about matching the longest pattern
// when there are alternates in the regexp.
//
// For instance:
// numval = /[0-9]+|0x[0-9a-fA-F]+/
// Does not work: SELECT Toto WHERE name = 'Text0xCTest' => Fails because 0xC is recongnized as a numval (inside the string) instead of a strval !!
//
// Inserting a ^ after the alternate (see comment at the top of this file) does not work either
// numval = /[0-9]+|'.chr(94).'0x[0-9a-fA-F]+/
// SELECT Toto WHERE name = 'Text0xCTest' => works but
// SELECT Toto WHERE id = 0xC => does not work, 'xC' is found as a name (apparently 0 is recognized as a numval and the remaining is a name !)
//
// numval = /([0-9]+|0x[0-9a-fA-F]+)/
// Does not work either, the hexadecimal numbers are not matched properly
// The following seems to work...
numval = /(0x[0-9a-fA-F]+|[0-9]+)/
strval = /"([^\\"]|\\"|\\\\)*"|'.chr(94).chr(39).'([^\\'.chr(39).']|\\'.chr(39).'|\\\\)*'.chr(39).'/
name = /([_a-zA-Z][_a-zA-Z0-9]*|`[^`]+`)/
varname = /:([_a-zA-Z][_a-zA-Z0-9]*->[_a-zA-Z][_a-zA-Z0-9]*|[_a-zA-Z][_a-zA-Z0-9]*)/

View File

@@ -1041,6 +1041,7 @@ class CAS_SelfRegister implements iSelfRegister
*/
public static function CheckCredentialsAndCreateUser($sName, $sPassword, $sLoginMode, $sAuthentication)
{
$bOk = true;
if ($sLoginMode != 'cas') return false; // Must be authenticated via CAS
$sCASMemberships = MetaModel::GetConfig()->Get('cas_memberof');
@@ -1066,24 +1067,49 @@ class CAS_SelfRegister implements iSelfRegister
phpCAS::log("Info: user if a member of the group: ".$sGroupName);
$sGroupName = trim(iconv('UTF-8', 'ASCII//TRANSLIT', $sGroupName)); // Remove accents and spaces as well
$aFilteredGroupNames[] = $sGroupName;
if (in_array($sGroupName, $aCASMemberships))
$bIsMember = false;
foreach($aCASMemberships as $sCASPattern)
{
if (self::IsPattern($sCASPattern))
{
if (preg_match($sCASPattern, $sGroupName))
{
$bIsMember = true;
break;
}
}
else if ($sPattern == $sGroupName)
{
$bIsMember = true;
break;
}
}
if ($bIsMember)
{
$bCASUserSynchro = MetaModel::GetConfig()->Get('cas_user_synchro');
if ($bCASUserSynchro)
{
// If needed create a new user for this email/profile
phpCAS::log('Info: cas_user_synchro is ON');
$bFound = self::CreateCASUser(phpCAS::getUser(), $aMemberOf);
$bOk = self::CreateCASUser(phpCAS::getUser(), $aMemberOf);
if($bOk)
{
$bFound = true;
}
else
{
phpCAS::log("User ".phpCAS::getUser()." cannot be created in iTop. Logging off...");
}
}
else
{
phpCAS::log('Info: cas_user_synchro is OFF');
$bFound = true;
}
$bFound = true;
break;
}
}
if(!$bFound)
if($bOk && !$bFound)
{
phpCAS::log("User ".phpCAS::getUser().", none of his/her groups (".implode('; ', $aFilteredGroupNames).") match any of the required groups: ".implode('; ', $aCASMemberships));
}
@@ -1125,7 +1151,8 @@ class CAS_SelfRegister implements iSelfRegister
*/
public static function UpdateUser(User $oUser, $sLoginMode, $sAuthentication)
{
if (($sLoginMode == 'cas') && (phpCAS::hasAttribute('memberOf')))
$bCASUpdateProfiles = MetaModel::GetConfig()->Get('cas_update_profiles');
if (($sLoginMode == 'cas') && $bCASUpdateProfiles && (phpCAS::hasAttribute('memberOf')))
{
$aMemberOf = phpCAS::getAttribute('memberOf');
if (!is_array($aMemberOf)) $aMemberOf = array($aMemberOf); // Just one entry, turn it into an array
@@ -1163,7 +1190,7 @@ class CAS_SelfRegister implements iSelfRegister
{
case 0:
phpCAS::log("Error: found no contact with the email: '$sEmail'. Cannot create the user in iTop.");
return;
return false;
case 1:
$oContact = $oSet->Fetch();
@@ -1173,7 +1200,7 @@ class CAS_SelfRegister implements iSelfRegister
default:
phpCAS::log("Error: ".$oSet->Count()." contacts have the same email: '$sEmail'. Cannot create a user for this email.");
return;
return false;
}
$oUser = new UserExternal();
@@ -1240,17 +1267,43 @@ class CAS_SelfRegister implements iSelfRegister
if (array_key_exists(strtolower($aMatches[1]), $aAllProfiles))
{
$aProfiles[] = $aAllProfiles[strtolower($aMatches[1])];
phpCAS::log("Info: Adding the profile '{$aMatches[1]}' from CAS.");
}
else
{
phpCAS::log("Warning: {$aMatches[1]} is not a valid iTop profile (extracted from group name: '$sGroupName'). Ignored.");
}
}
else
{
phpCAS::log("Info: The CAS group '$sGroupName' does not seem to match an iTop pattern. Ignored.");
}
}
if (count($aProfiles) == 0)
{
phpCAS::log("Error: no group name matches the pattern: '$sPattern'. The user '$sEmail' has no profiles in iTop, and therefore cannot be created.");
return false;
phpCAS::log("Info: The user '".$oUser->GetName()."' has no profiles retrieved from CAS. Default profile(s) will be used.");
// Second attempt: check if there is/are valid default profile(s)
$sCASDefaultProfiles = MetaModel::GetConfig()->Get('cas_default_profiles');
$aCASDefaultProfiles = explode(';', $sCASDefaultProfiles);
foreach($aCASDefaultProfiles as $sDefaultProfileName)
{
if (array_key_exists(strtolower($sDefaultProfileName), $aAllProfiles))
{
$aProfiles[] = $aAllProfiles[strtolower($sDefaultProfileName)];
phpCAS::log("Info: Adding the default profile '".$aAllProfiles[strtolower($sDefaultProfileName)]."' from CAS.");
}
else
{
phpCAS::log("Warning: the default profile {$sDefaultProfileName} is not a valid iTop profile. Ignored.");
}
}
if (count($aProfiles) == 0)
{
phpCAS::log("Error: The user '".$oUser->GetName()."' has no profiles in iTop, and therefore cannot be created.");
return false;
}
}
// Now synchronize the profiles
@@ -1263,7 +1316,23 @@ class CAS_SelfRegister implements iSelfRegister
$oProfilesSet->AddObject($oLink);
}
$oUser->Set('profile_list', $oProfilesSet);
phpCAS::log("Info: the user $sEmail (id=".$oUser->GetKey().") now has the following profiles: '".implode("', '", $aProfiles)."'.");
phpCAS::log("Info: the user '".$oUser->GetName()."' (id=".$oUser->GetKey().") now has the following profiles: '".implode("', '", $aProfiles)."'.");
if ($oUser->IsModified())
{
$oMyChange = MetaModel::NewObject("CMDBChange");
$oMyChange->Set("date", time());
$oMyChange->Set("userinfo", 'CAS/LDAP Synchro');
$oMyChange->DBInsert();
if ($oUser->IsNew())
{
$oUser->DBInsertTracked($oMyChange);
}
else
{
$oUser->DBUpdateTracked($oMyChange);
}
}
return true;
}
/**

View File

@@ -284,6 +284,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:SynchroReplica/Attribute:status_last_warning' => 'Letzte Warnung',
'Class:SynchroReplica/Attribute:info_creation_date' => 'Erzeugungs-Datum',
'Class:SynchroReplica/Attribute:info_last_modified' => 'Datum der letzten Modifikation',
'Class:SynchroDataSource/Attribute:database_table_name' => 'Datenbanktabelle',
'Class:SynchroDataSource/Attribute:database_table_name+' => 'Name der Tabelle, die Speicherung der Daten aus dieser Datenquelle. Ein Default-Name wird automatisch berechnet, wenn dieses Feld leer gelassen wird.',
'Class:SynchroDataSource/Error:DataTableAlreadyExists' => 'Tabelle %1$s existiert bereits in der Datenbank. Bitte benutzen Sie einen anderen Namen für die Datenbanktabelle aus dieser Datenquelle.',
'Class:appUserPreferences' => 'Benutzer-Voreinstellungen',
'Class:appUserPreferences/Attribute:userid' => 'Benutzer',
'Class:appUserPreferences/Attribute:preferences' => 'Voreinstellungen',

View File

@@ -570,6 +570,8 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:SynchroDataSource/Attribute:delete_policy_update+' => 'Syntax: field_name:value; ...',
'Class:SynchroDataSource/Attribute:delete_policy_retention' => 'Retention Duration',
'Class:SynchroDataSource/Attribute:delete_policy_retention+' => 'How much time an obsolete object is kept before being deleted',
'Class:SynchroDataSource/Attribute:database_table_name' => 'Data table',
'Class:SynchroDataSource/Attribute:database_table_name+' => 'Name of the table to store the synchronization data. If left empty, a default name will be computed.',
'SynchroDataSource:Description' => 'Description',
'SynchroDataSource:Reconciliation' => 'Search &amp; reconciliation',
'SynchroDataSource:Deletion' => 'Deletion rules',
@@ -618,6 +620,7 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:SynchroDataSource/Error:AtLeastOneReconciliationKeyMustBeSpecified' => 'At Least one reconciliation key must be specified, or the reconciliation policy must be to use the primary key.',
'Class:SynchroDataSource/Error:DeleteRetentionDurationMustBeSpecified' => 'A delete retention period must be specified, since objects are to be deleted after being marked as obsolete',
'Class:SynchroDataSource/Error:DeletePolicyUpdateMustBeSpecified' => 'Obsolete objects are to be updated, but no update is specified.',
'Class:SynchroDataSource/Error:DataTableAlreadyExists' => 'The table %1$s already exists in the database. Please use another name for the synchro data table.',
'Core:SynchroReplica:PublicData' => 'Public Data',
'Core:SynchroReplica:PrivateDetails' => 'Private Details',
'Core:SynchroReplica:BackToDataSource' => 'Go Back to the Synchro Data Source: %1$s',

View File

@@ -280,6 +280,8 @@ Dict::Add('FR FR', 'French', 'Français', array(
'Class:SynchroDataSource/Attribute:url_icon+' => 'Hyperlien vers une icône représentant l\'application source des données',
'Class:SynchroDataSource/Attribute:url_application' => 'Application (hyperlien)',
'Class:SynchroDataSource/Attribute:url_application+' => 'Un hyperlien vers l\'application source des données. Paramètres possibles: $this->nom_de_champ$ et $replica->primary_key$',
'Class:SynchroDataSource/Attribute:database_table_name' => 'Table de données',
'Class:SynchroDataSource/Attribute:database_table_name+' => 'Nom de la table stockant les données de cette source. Un nom par défaut est calculé automatiquement si ce champ est laissé vide.',
'Class:SynchroAttribute' => 'Champs de synchronisation',
'Class:SynchroAttribute+' => '',
'Class:SynchroAttribute/Attribute:sync_source_id' => 'Source de données',
@@ -587,6 +589,7 @@ Opérateurs :<br/>
'Class:SynchroDataSource/Error:AtLeastOneReconciliationKeyMustBeSpecified' => 'Si la politique de réconciliation n\'est pas la clé primaire, au moins une clé de recherche doit être spécifiée',
'Class:SynchroDataSource/Error:DeleteRetentionDurationMustBeSpecified' => 'Pour que les objets soient effacés après avoir été obsoletés, il faut spécifier une durée de rétention',
'Class:SynchroDataSource/Error:DeletePolicyUpdateMustBeSpecified' => 'Les objets obsolètes doivent être mis à jour, mais aucune information de mise à jour n\'est spécifiée',
'Class:SynchroDataSource/Error:DataTableAlreadyExists' => 'La table %1$s existe déjà dans la base de données. Veuillez utiliser un autre nom pour la table des données de cette source.',
'Core:SynchroReplica:PublicData' => 'Données synchronisées',
'Core:SynchroReplica:PrivateDetails' => 'Informations internes',
'Core:SynchroReplica:BackToDataSource' => 'Retourner aux détails de la source de données: %1$s',
@@ -602,7 +605,7 @@ Opérateurs :<br/>
'Core:SynchroAtt:update_policy+' => '',
'Core:SynchroAtt:reconciliation_attcode' => 'Clé de recherche',
'Core:SynchroAtt:reconciliation_attcode+' => '',
'Core:SyncDataExchangeComment' => '(Synhcronisation)',
'Core:SyncDataExchangeComment' => '(Synchronisation)',
'Core:Synchro:ListOfDataSources' => 'Sources de données:',
'Core:Synchro:LastSynchro' => 'Dernière synchronisation:',
'Core:Synchro:ThisObjectIsSynchronized' => 'Cet objet est synchronisé avec une source de données',

View File

@@ -47,7 +47,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
'Core:AttributeClass+' => 'クラス',
'Core:AttributeApplicationLanguage' => '使用言語',
'Core:AttributeApplicationLanguage+' => '言語・国別 (EN US)',
'Core:AttributeApplicationLanguage+' => '言語・国別 (JA JP)',
'Core:AttributeFinalClass' => 'クラス (自動)',
'Core:AttributeFinalClass+' => 'オブジェクトの実クラス (コアで自動的に生成される)',
@@ -85,14 +85,38 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
'Core:AttributeTemplateHTML' => 'テンプレートHTML',
'Core:AttributeTemplateHTML+' => 'プレースホルダを含むHTML',
'Core:AttributeWikiText' => 'Wikiアーティクル',
'Core:AttributeWikiText+' => 'Wikiフォーマット済みテキスト',
'Core:AttributeDateTime' => '日付/時刻',
'Core:AttributeDateTime+' => '日付と時刻(年-月-日 hh:mm:ss)',
'Core:AttributeDateTime?SmartSearch' => '
<p>
Date format:<br/>
<b>yyyy-mm-dd hh:mm:ss</b><br/>
例: 2011-07-19 18:40:00
</p>
<p>
Operators:<br/>
<b>&gt;</b><em>日付</em><br/>
<b>&lt;</b><em>日付</em><br/>
<b>[</b><em>日付</em>,<em>日付</em><b>]</b>
</p>
<p>
もし、時刻がなければ、規定値 00:00:00となります。
</p>',
'Core:AttributeDate' => '日付',
'Core:AttributeDate+' => '日付 (年-月-日)',
'Core:AttributeDate?SmartSearch' => '
<p>
日付フォーマット:<br/>
<b>yyyy-mm-dd</b><br/>
例: 2011-07-19
</p>
<p>
演算子:<br/>
<b>&gt;</b><em>日付</em><br/>
<b>&lt;</b><em>日付</em><br/>
<b>[</b><em>日付</em>,<em>日付</em><b>]</b>
</p>',
'Core:AttributeDeadline' => '締切',
'Core:AttributeDeadline+' => '日付, 現在時刻からの相対表示',
@@ -107,7 +131,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
'Core:AttributeURL+' => '絶対URLもしくは相対URLのテキスト文字列',
'Core:AttributeBlob' => 'Blob',
'Core:AttributeBlob+' => '任意のバイナリコンテンツ(ドキュメント)',
'Core:AttributeBlob+' => '任意のバイナリコンテンツ(文書)',
'Core:AttributeOneWayPassword' => '一方向パスワード',
'Core:AttributeOneWayPassword+' => '一方向暗号化(ハッシュ)パスワード',
@@ -117,8 +141,14 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
'Core:AttributePropertySet' => 'プロパティ',
'Core:AttributePropertySet+' => '型づけされていないプロパティのリスト(名前とバリュー)',
));
'Core:AttributeFriendlyName' => 'Friendly name',
'Core:AttributeFriendlyName+' => 'Attribute created automatically ; the friendly name is computed after several attributes',
'Core:FriendlyName-Label' => 'Name',
'Core:FriendlyName-Description' => 'Friendly name',
));
//////////////////////////////////////////////////////////////////////
// Classes in 'core/cmdb'
@@ -155,7 +185,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:CMDBChangeOp/Attribute:objclass+' => 'オブジェクトクラス',
'Class:CMDBChangeOp/Attribute:objkey' => 'オブジェクトID',
'Class:CMDBChangeOp/Attribute:objkey+' => 'オブジェクトID',
'Class:CMDBChangeOp/Attribute:finalclass' => '',
'Class:CMDBChangeOp/Attribute:finalclass' => 'タイプ',
'Class:CMDBChangeOp/Attribute:finalclass+' => '',
));
@@ -164,8 +194,8 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:CMDBChangeOpCreate' => 'オブジェクト成',
'Class:CMDBChangeOpCreate+' => 'オブジェクト成履歴',
'Class:CMDBChangeOpCreate' => 'オブジェクト成',
'Class:CMDBChangeOpCreate+' => 'オブジェクト成履歴',
));
//
@@ -204,11 +234,13 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Change:ObjectCreated' => 'オブジェクトを生成しました',
'Change:ObjectDeleted' => 'オブジェクトを削除しました',
'Change:ObjectModified' => 'オブジェクトを更新しました',
'Change:ObjectModified' => 'オブジェクトを修正しました',
'Change:AttName_SetTo_NewValue_PreviousValue_OldValue' => '%1$sを%2$sに設定しました (変更前の値: %3$s)',
'Change:AttName_SetTo' => '%1$s は %2$sにセットされました。', // '%1$s set to %2$s',
'Change:Text_AppendedTo_AttName' => '%1$sを%2$sに追加しました',
'Change:AttName_Changed_PreviousValue_OldValue' => '%1$sを更しました。更新前の値: %2$s',
'Change:AttName_Changed' => '%1$sを更しました',
'Change:AttName_Changed_PreviousValue_OldValue' => '%1$sを更しました。更新前の値: %2$s',
'Change:AttName_Changed' => '%1$sを更しました',
'Change:AttName_EntryAdded' => '%1$s は、修正されました。新しいエントリーが追加されました。',
));
//
@@ -218,8 +250,8 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:CMDBChangeOpSetAttributeBlob' => 'データ変更',
'Class:CMDBChangeOpSetAttributeBlob+' => 'データ変更履歴',
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata' => '変更前のデータ', //'Previous data',
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata+' => 'この属性の以前の内容', //'previous contents of the attribute',
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata' => '前のデータ',
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata+' => 'この属性の以前の内容',
));
//
@@ -227,10 +259,10 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:CMDBChangeOpSetAttributeText' => 'テキストの変更', //'text change',
'Class:CMDBChangeOpSetAttributeText+' => 'テキストの変更履歴', //'text change tracking',
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata' => '以前の内容', //'Previous data',
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata+' => 'この属性の以前の内容', //'previous contents of the attribute',
'Class:CMDBChangeOpSetAttributeText' => 'テキストの変更',
'Class:CMDBChangeOpSetAttributeText+' => 'テキストの変更履歴',
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata' => '以前の内容',
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata+' => 'この属性の以前の内容',
));
//
@@ -238,15 +270,15 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:Event' => 'ログイベント',// 'Log Event',
'Class:Event+' => 'アプリケーション内部イベント', //'An application internal event',
'Class:Event/Attribute:message' => 'メッセージ', //'message',
'Class:Event/Attribute:message+' => 'イベント概略', //'short description of the event',
'Class:Event/Attribute:date' => '日付', //'date',
'Class:Event/Attribute:date+' => '変更が記録された日時', //'date and time at which the changes have been recorded',
'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' => '', //'type',
'Class:Event' => 'ログイベント',
'Class:Event+' => 'アプリケーション内部イベント',
'Class:Event/Attribute:message' => 'メッセージ',
'Class:Event/Attribute:message+' => 'イベントの短い説明',
'Class:Event/Attribute:date' => '日付',
'Class:Event/Attribute:date+' => '変更が記録された日時',
'Class:Event/Attribute:userinfo' => 'ユーザ情報',
'Class:Event/Attribute:userinfo+' => 'このイベントをトリガーしたアクションを行ったユーザ',
'Class:Event/Attribute:finalclass' => 'タイプ',
'Class:Event/Attribute:finalclass+' => '',
));
@@ -255,13 +287,13 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:EventNotification' => '通知イベント', // 'Notification event',
'Class:EventNotification+' => '創出された通知のトレース', //'Trace of a notification that has been sent',
'Class:EventNotification/Attribute:trigger_id' => 'トリガー', //'Trigger',
'Class:EventNotification/Attribute:trigger_id+' => 'ユーザアカウント', //'user account',
'Class:EventNotification/Attribute:action_id' => 'ユーザ', //'user',
'Class:EventNotification/Attribute:action_id+' => 'ユーザアカウント', //'user account',
'Class:EventNotification/Attribute:object_id' => 'オブジェクトID', //'Object id',
'Class:EventNotification' => '通知イベント',
'Class:EventNotification+' => '送信された通知のトレース',
'Class:EventNotification/Attribute:trigger_id' => 'トリガー',
'Class:EventNotification/Attribute:trigger_id+' => 'ユーザアカウント',
'Class:EventNotification/Attribute:action_id' => 'ユーザ',
'Class:EventNotification/Attribute:action_id+' => 'ユーザアカウント',
'Class:EventNotification/Attribute:object_id' => 'オブジェクトID',
'Class:EventNotification/Attribute:object_id+' => 'オブジェクトID(トリガーでクラスが定義済み?)', //'object id (class defined by the trigger ?)',
));
@@ -269,8 +301,9 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
// Class: EventNotificationEmail
//
Dict::Add('JA JP', 'Japanese', '日本語', array('Class:EventNotificationEmail' => 'メール送出イベント', //'Email emission event',
'Class:EventNotificationEmail+' => '送出されたメールのトレース',//Trace of an email that has been sent',
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:EventNotificationEmail' => 'メール送出イベント',
'Class:EventNotificationEmail+' => '送出されたメールのトレース',
'Class:EventNotificationEmail/Attribute:to' => 'TO',
'Class:EventNotificationEmail/Attribute:to+' => 'TO',
'Class:EventNotificationEmail/Attribute:cc' => 'CC',
@@ -278,34 +311,34 @@ Dict::Add('JA JP', 'Japanese', '日本語', array('Class:EventNotificationEmail'
'Class:EventNotificationEmail/Attribute:bcc' => 'BCC',
'Class:EventNotificationEmail/Attribute:bcc+' => 'BCC',
'Class:EventNotificationEmail/Attribute:from' => 'From',
'Class:EventNotificationEmail/Attribute:from+' => 'メール送信者', //'Sender of the message',
'Class:EventNotificationEmail/Attribute:from+' => 'メール送信者',
'Class:EventNotificationEmail/Attribute:subject' => 'Subject',
'Class:EventNotificationEmail/Attribute:subject+' => 'Subject',
'Class:EventNotificationEmail/Attribute:subject+' => '件名',
'Class:EventNotificationEmail/Attribute:body' => 'Body',
'Class:EventNotificationEmail/Attribute:body+' => 'Body',
'Class:EventNotificationEmail/Attribute:body+' => '本文',
));
//
// Class: EventIssue
//
Dict::Add('EN US', 'English', 'English', array(
'Class:EventIssue' => 'イシューイベント', //'Issue event',
'Class:EventIssue+' => 'イシュー(警告、エラーetc)のトレース', //'Trace of an issue (warning, error, etc.)',
'Class:EventIssue/Attribute:issue' => 'イシュー', //'Issue',
'Class:EventIssue/Attribute:issue+' => '何が起こったか', //'What happened',
'Class:EventIssue/Attribute:impact' => 'インパクト', //'Impact',
'Class:EventIssue/Attribute:impact+' => 'その結果', //'What are the consequences',
'Class:EventIssue/Attribute:page' => 'ページ', //'Page',
'Class:EventIssue/Attribute:page+' => 'HTTPエントリポイント', //'HTTP entry point',
'Class:EventIssue/Attribute:arguments_post' => 'POSTされた引数', //'Posted arguments',
'Class:EventIssue/Attribute:arguments_post+' => 'HTTP POST引数', //'HTTP POST arguments',
'Class:EventIssue/Attribute:arguments_get' => 'URLパラメータ', //'URL arguments',
'Class:EventIssue/Attribute:arguments_get+' => 'HTTP GETパラメータ', //'HTTP GET arguments',
'Class:EventIssue/Attribute:callstack' => 'コールスタック', //'Callstack',
'Class:EventIssue/Attribute:callstack+' => 'スタックをコールする', //'Call stack',
'Class:EventIssue/Attribute:data' => 'データ', //'Data',
'Class:EventIssue/Attribute:data+' => '詳細情報', //'More information',
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:EventIssue' => '課題',
'Class:EventIssue+' => '課題(警告、エラーetc)のトレース',
'Class:EventIssue/Attribute:issue' => '課題',
'Class:EventIssue/Attribute:issue+' => '課題',
'Class:EventIssue/Attribute:impact' => 'インパクト',
'Class:EventIssue/Attribute:impact+' => 'その結果',
'Class:EventIssue/Attribute:page' => 'ページ',
'Class:EventIssue/Attribute:page+' => 'HTTPエントリポイント',
'Class:EventIssue/Attribute:arguments_post' => 'POSTされた引数',
'Class:EventIssue/Attribute:arguments_post+' => 'HTTP POST引数',
'Class:EventIssue/Attribute:arguments_get' => 'URLパラメータ',
'Class:EventIssue/Attribute:arguments_get+' => 'HTTP GETパラメータ',
'Class:EventIssue/Attribute:callstack' => 'コールスタック',
'Class:EventIssue/Attribute:callstack+' => 'スタックをコールする',
'Class:EventIssue/Attribute:data' => 'データ',
'Class:EventIssue/Attribute:data+' => '追加情報',
));
//
@@ -313,20 +346,35 @@ Dict::Add('EN US', 'English', 'English', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:EventWebService' => 'ウェブサービスイベント', //'Web service event',
'Class:EventWebService+' => 'ウェブサービス呼出のYトレース', //'Trace of an web service call',
'Class:EventWebService/Attribute:verb' => '動', //'Verb',
'Class:EventWebService/Attribute:verb+' => '操作名', //'Name of the operation',
'Class:EventWebService/Attribute:result' => '結果', //'Result',
'Class:EventWebService/Attribute:result+' => '総体的な成功/失敗', //'Overall success/failure',
'Class:EventWebService/Attribute:log_info' => 'インフォログ', //'Info log',
'Class:EventWebService/Attribute:log_info+' => 'インフォログの結果', //'Result info log',
'Class:EventWebService/Attribute:log_warning' => 'ウォーニンググ', //'Warning log',
'Class:EventWebService/Attribute:log_warning+' => 'ウォーニングログ結果', //'Result warning log',
'Class:EventWebService/Attribute:log_error' => 'エラーログ', //'Error log',
'Class:EventWebService/Attribute:log_error+' => 'エラーログ結果', //'Result error log',
'Class:EventWebService/Attribute:data' => 'データ', //'Data',
'Class:EventWebService/Attribute:data+' => 'データ結果', //'Result data',
'Class:EventWebService' => 'ウェブサービスイベント',
'Class:EventWebService+' => 'ウェブサービス呼出のトレース',
'Class:EventWebService/Attribute:verb' => '動',
'Class:EventWebService/Attribute:verb+' => '操作名',
'Class:EventWebService/Attribute:result' => '結果',
'Class:EventWebService/Attribute:result+' => '総体的な成功/失敗',
'Class:EventWebService/Attribute:log_info' => 'インフォログ',
'Class:EventWebService/Attribute:log_info+' => 'インフォログの結果',
'Class:EventWebService/Attribute:log_warning' => 'ーニンググ',
'Class:EventWebService/Attribute:log_warning+' => 'ーニングログ結果',
'Class:EventWebService/Attribute:log_error' => 'エラーログ',
'Class:EventWebService/Attribute:log_error+' => 'エラーログ結果',
'Class:EventWebService/Attribute:data' => 'データ',
'Class:EventWebService/Attribute:data+' => '結果データ',
));
//
// Class: EventLoginUsage
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:EventLoginUsage' => 'ログイン方法',
'Class:EventLoginUsage+' => 'アプリケーションへ接続します。',
'Class:EventLoginUsage/Attribute:user_id' => 'ログイン',
'Class:EventLoginUsage/Attribute:user_id+' => 'ログイン',
'Class:EventLoginUsage/Attribute:contact_name' => 'ユーザ名',
'Class:EventLoginUsage/Attribute:contact_name+' => 'ユーザ名',
'Class:EventLoginUsage/Attribute:contact_email' => 'ユーザのEmail',
'Class:EventLoginUsage/Attribute:contact_email+' => 'ユーザの電子メールアドレス',
));
//
@@ -334,24 +382,24 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:Action' => 'カスタムアクション', //'Custom Action',
'Class:Action+' => 'ユーザ定義アクション', //'User defined action',
'Class:Action/Attribute:name' => '名前', //'Name',
'Class:Action' => 'カスタムアクション',
'Class:Action+' => 'ユーザ定義アクション',
'Class:Action/Attribute:name' => '名前',
'Class:Action/Attribute:name+' => '',
'Class:Action/Attribute:description' => '概要', //'Description',
'Class:Action/Attribute:description' => '説明',
'Class:Action/Attribute:description+' => '',
'Class:Action/Attribute:status' => 'ステータス', //'Status',
'Class:Action/Attribute:status+' => '製品化済み、あるいは?', //'In production or ?',
'Class:Action/Attribute:status/Value:test' => 'テスト済み', //'Being tested',
'Class:Action/Attribute:status/Value:test+' => 'テスト済み', //'Being tested',
'Class:Action/Attribute:status/Value:enabled' => '製品化済み', //'In production',
'Class:Action/Attribute:status/Value:enabled+' => '製品化済み', //'In production',
'Class:Action/Attribute:status/Value:disabled' => '非アクティブ', //'Inactive',
'Class:Action/Attribute:status/Value:disabled+' => '非アクティブ', //'Inactive',
'Class:Action/Attribute:trigger_list' => '関連トリガ', //'Related Triggers',
'Class:Action/Attribute:trigger_list+' => 'このアクションにリンクされたトリガ', //'Triggers linked to this action',
'Class:Action/Attribute:finalclass' => '', //'Type',
'Class:Action/Attribute:finalclass+' => '',
'Class:Action/Attribute:status' => '状態',
'Class:Action/Attribute:status+' => '稼働中、あるいは?',
'Class:Action/Attribute:status/Value:test' => 'テスト',
'Class:Action/Attribute:status/Value:test+' => 'テスト',
'Class:Action/Attribute:status/Value:enabled' => '稼働中',
'Class:Action/Attribute:status/Value:enabled+' => '稼働中',
'Class:Action/Attribute:status/Value:disabled' => '非アクティブ',
'Class:Action/Attribute:status/Value:disabled+' => '非アクティブ',
'Class:Action/Attribute:trigger_list' => '関連トリガ',
'Class:Action/Attribute:trigger_list+' => 'このアクションにリンクされたトリガ',
'Class:Action/Attribute:finalclass' => 'タイプ',
'Class:Action/Attribute:finalclass+' => 'タイプ',
));
//
@@ -359,8 +407,8 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:ActionNotification' => 'ノーティフィケーション', //'Notification',
'Class:ActionNotification+' => 'ノーティフィケーション(抽象)', //'Notification (abstract)',
'Class:ActionNotification' => '通知',
'Class:ActionNotification+' => '通知(要約)',
));
//
@@ -368,31 +416,31 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:ActionEmail' => 'メール通知', //'Email notification',
'Class:ActionEmail' => 'メール通知',
'Class:ActionEmail+' => '',
'Class:ActionEmail/Attribute:test_recipient' => 'テストレシピ', //'Test recipient',
'Class:ActionEmail/Attribute:test_recipient+' => 'Detination in case status is set to "Test"',
'Class:ActionEmail/Attribute:test_recipient' => 'テストレシピ',
'Class:ActionEmail/Attribute:test_recipient+' => '状態がテストの場合の宛先',
'Class:ActionEmail/Attribute:from' => 'From',
'Class:ActionEmail/Attribute:from+' => 'Will be sent into the email header',
'Class:ActionEmail/Attribute:reply_to' => 'Reply to',
'Class:ActionEmail/Attribute:reply_to+' => 'Will be sent into the email header',
'Class:ActionEmail/Attribute:to' => 'To',
'Class:ActionEmail/Attribute:to+' => 'メールの宛先', //'Destination of the email',
'Class:ActionEmail/Attribute:to+' => 'メールの宛先',
'Class:ActionEmail/Attribute:cc' => 'Cc',
'Class:ActionEmail/Attribute:cc+' => 'Carbon Copy',
'Class:ActionEmail/Attribute:bcc' => 'bcc',
'Class:ActionEmail/Attribute:bcc+' => 'Blind Carbon Copy',
'Class:ActionEmail/Attribute:subject' => 'subject',
'Class:ActionEmail/Attribute:subject+' => 'メールのタイトル', //'Title of the email',
'Class:ActionEmail/Attribute:subject+' => 'メールの題名',
'Class:ActionEmail/Attribute:body' => 'body',
'Class:ActionEmail/Attribute:body+' => 'メールの本文', //'Contents of the email',
'Class:ActionEmail/Attribute:importance' => 'importance',
'Class:ActionEmail/Attribute:importance+' => '重要度フラグ', //'Importance flag',
'Class:ActionEmail/Attribute:importance/Value:low' => 'low',
'Class:ActionEmail/Attribute:body+' => 'メールの本文',
'Class:ActionEmail/Attribute:importance' => '重要度',
'Class:ActionEmail/Attribute:importance+' => '重要度フラグ',
'Class:ActionEmail/Attribute:importance/Value:low' => '',
'Class:ActionEmail/Attribute:importance/Value:low+' => 'low',
'Class:ActionEmail/Attribute:importance/Value:normal' => 'normal',
'Class:ActionEmail/Attribute:importance/Value:normal' => '',
'Class:ActionEmail/Attribute:importance/Value:normal+' => 'normal',
'Class:ActionEmail/Attribute:importance/Value:high' => 'high',
'Class:ActionEmail/Attribute:importance/Value:high' => '',
'Class:ActionEmail/Attribute:importance/Value:high+' => 'high',
));
@@ -401,14 +449,14 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:Trigger' => 'トリガー', //'Trigger',
'Class:Trigger+' => 'カスタムイベントヘッダ', //'Custom event handler',
'Class:Trigger/Attribute:description' => '概要', //'Description',
'Class:Trigger/Attribute:description+' => '1行概要', //'one line description',
'Class:Trigger/Attribute:action_list' => 'トリガされたアクション', //'Triggered actions',
'Class:Trigger/Attribute:action_list+' => 'トリガが発火した場合に動作するアクション', //'Actions performed when the trigger is activated',
'Class:Trigger/Attribute:finalclass' => '', //'Type',
'Class:Trigger/Attribute:finalclass+' => '',
'Class:Trigger' => 'トリガー',
'Class:Trigger+' => 'カスタムイベントハンドラー',
'Class:Trigger/Attribute:description' => '説明',
'Class:Trigger/Attribute:description+' => '1行の説明',
'Class:Trigger/Attribute:action_list' => 'トリガされたアクション',
'Class:Trigger/Attribute:action_list+' => 'トリガが発行された場合に動作するアクション',
'Class:Trigger/Attribute:finalclass' => 'タイプ',
'Class:Trigger/Attribute:finalclass+' => 'Type',
));
//
@@ -416,21 +464,30 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:TriggerOnObject' => 'トリガ(クラス依存)', //'Trigger (class dependent)',
'Class:TriggerOnObject+' => '指定オブジェクトのクラスのトリガ', //'Trigger on a given class of objects',
'Class:TriggerOnObject/Attribute:target_class' => 'ターゲットクラス', //'Target class',
'Class:TriggerOnObject' => 'トリガ(クラス依存)',
'Class:TriggerOnObject+' => 'オブジェクトの指定されたクラスのトリガ',
'Class:TriggerOnObject/Attribute:target_class' => 'ターゲットクラス',
'Class:TriggerOnObject/Attribute:target_class+' => '',
));
//
// Class: TriggerOnPortalUpdate
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:TriggerOnPortalUpdate' => 'トリガー(ポータルから更新された時)',
'Class:TriggerOnPortalUpdate+' => 'エンドユーザがポータルから更新した場合のトリガー',
));
//
// Class: TriggerOnStateChange
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:TriggerOnStateChange' => '(状態変の)トリガ', // Trigger (on state change)',
'Class:TriggerOnStateChange+' => 'オブジェクト状態変のトリガ', //'Trigger on object state change',
'Class:TriggerOnStateChange/Attribute:state' => '状態', //'State',
'Class:TriggerOnStateChange/Attribute:state+' => '',
'Class:TriggerOnStateChange' => '(状態変の)トリガ',
'Class:TriggerOnStateChange+' => 'オブジェクト状態変のトリガ',
'Class:TriggerOnStateChange/Attribute:state' => '状態',
'Class:TriggerOnStateChange/Attribute:state+' => 'State',
));
//
@@ -438,8 +495,8 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:TriggerOnStateEnter' => 'トリガ(ある状態に入る)', // 'Trigger (on entering a state)',
'Class:TriggerOnStateEnter+' => 'オブジェクト状態変更のトリガ: 入場', //'Trigger on object state change - entering',
'Class:TriggerOnStateEnter' => '入状態トリガー',
'Class:TriggerOnStateEnter+' => 'オブジェクト状態へ入る変化(エンター,on entering a state時のトリガー',
));
//
@@ -447,8 +504,8 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:TriggerOnStateLeave' => '(ある状態から退場する)トリガ', // 'Trigger (on leaving a state)',
'Class:TriggerOnStateLeave+' => 'オブジェクト状態変更のトリガ: 退場', //Trigger on object state change - leaving',
'Class:TriggerOnStateLeave' => '出状態トリガ',
'Class:TriggerOnStateLeave+' => 'オブジェクト状態から出る変化(リーブ,on leaving a state時のトリガー',
));
//
@@ -456,8 +513,8 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:TriggerOnObjectCreate' => '(オブジェクト生成の)トリガ', //Trigger (on object creation)',
'Class:TriggerOnObjectCreate+' => '指定されたクラスの(子クラスの)オブジェクト生成のトリガ', //Trigger on object creation of [a child class of] the given class',
'Class:TriggerOnObjectCreate' => 'オブジェクト作成トリガ',
'Class:TriggerOnObjectCreate+' => '指定されたクラスの(子クラスの)オブジェクト作成時のトリガ',
));
//
@@ -465,19 +522,237 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:lnkTriggerAction' => 'アクション/トリガ', //'Action/Trigger',
'Class:lnkTriggerAction+' => 'トリガとアクション間のリンク', //'Link between a trigger and an action',
'Class:lnkTriggerAction/Attribute:action_id' => 'アクション', //'Action',
'Class:lnkTriggerAction/Attribute:action_id+' => '実行されるべきアクション', //'The action to be executed',
'Class:lnkTriggerAction/Attribute:action_name' => 'アクション', //'Action',
'Class:lnkTriggerAction' => 'トリガ/アクション',
'Class:lnkTriggerAction+' => 'トリガとアクション間のリンク',
'Class:lnkTriggerAction/Attribute:action_id' => 'アクション',
'Class:lnkTriggerAction/Attribute:action_id+' => '実行されるアクション',
'Class:lnkTriggerAction/Attribute:action_name' => 'アクション',
'Class:lnkTriggerAction/Attribute:action_name+' => '',
'Class:lnkTriggerAction/Attribute:trigger_id' => 'トリガ', //'Trigger',
'Class:lnkTriggerAction/Attribute:trigger_id' => 'トリガ',
'Class:lnkTriggerAction/Attribute:trigger_id+' => '',
'Class:lnkTriggerAction/Attribute:trigger_name' => 'トリガ', //'Trigger',
'Class:lnkTriggerAction/Attribute:trigger_name' => 'トリガ',
'Class:lnkTriggerAction/Attribute:trigger_name+' => '',
'Class:lnkTriggerAction/Attribute:order' => '処理順序', //'Order',
'Class:lnkTriggerAction/Attribute:order+' => 'アクション実行順序', //'Actions execution order',
'Class:lnkTriggerAction/Attribute:order' => '順序',
'Class:lnkTriggerAction/Attribute:order+' => 'アクション実行順序',
));
//
// Synchro Data Source
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:SynchroDataSource/Attribute:name' => '名前',
'Class:SynchroDataSource/Attribute:name+' => '名前',
'Class:SynchroDataSource/Attribute:description' => '説明',
'Class:SynchroDataSource/Attribute:status' => '状態', //TODO: enum values
'Class:SynchroDataSource/Attribute:scope_class' => 'ターゲットクラス',
'Class:SynchroDataSource/Attribute:user_id' => 'ユーザ',
'Class:SynchroDataSource/Attribute:notify_contact_id' => '通知する連絡先',
'Class:SynchroDataSource/Attribute:notify_contact_id+' => 'エラーが発生した場合に通知する連絡先。',
'Class:SynchroDataSource/Attribute:url_icon' => 'アイコンのハイパーリンク',
'Class:SynchroDataSource/Attribute:url_icon+' => 'iTopが同期されたアプリケーションを示すハイパーリンク小さなイメージ',
'Class:SynchroDataSource/Attribute:url_application' => 'アプリケーションのハイパーリンク',
'Class:SynchroDataSource/Attribute:url_application+' => 'iTopが同期化された外部アプリケーションのiTopオブジェクトへのハイパーリンク該当する場合。可能なプレースホルダ: $this->attribute$ and $replica->primary_key$',
'Class:SynchroDataSource/Attribute:reconciliation_policy' => '調整ポリシー', //TODO enum values
'Class:SynchroDataSource/Attribute:full_load_periodicity' => '全データロードの間隔',
'Class:SynchroDataSource/Attribute:full_load_periodicity+' => '全データの完全な再ロードを最低ここに指定されている間隔で行う必要があります。',
'Class:SynchroDataSource/Attribute:action_on_zero' => '検索結果0件時のアクション',
'Class:SynchroDataSource/Attribute:action_on_zero+' => '検索結果としてオブジェクトが何も返さない場合に実行されるアクション',
'Class:SynchroDataSource/Attribute:action_on_one' => '検索結果1件時のアクション',
'Class:SynchroDataSource/Attribute:action_on_one+' => '検索結果として一つのみのオブジェクトが返されたときに実行されるアクション',
'Class:SynchroDataSource/Attribute:action_on_multiple' => '検索結果複数時のアクション',
'Class:SynchroDataSource/Attribute:action_on_multiple+' => '検索結果として二つ以上のオブジェクトが返されたときに実行されるアクション',
'Class:SynchroDataSource/Attribute:user_delete_policy' => '許可されたユーザ',
'Class:SynchroDataSource/Attribute:user_delete_policy+' => '同期されたオブジェクトの削除が許可されたユーザ',
// 'Class:SynchroDataSource/Attribute:user_delete_policy' => '許可されたユーザ', // double
'Class:SynchroDataSource/Attribute:delete_policy/Value:never' => '誰もいない',//'Nobody',
'Class:SynchroDataSource/Attribute:delete_policy/Value:depends' => '管理者のみ',
'Class:SynchroDataSource/Attribute:delete_policy/Value:always' => '全ての許可されたユーザ',
'Class:SynchroDataSource/Attribute:delete_policy_update' => '更新ルール',
'Class:SynchroDataSource/Attribute:delete_policy_update+' => '構文: フィールド名:値; ...',
'Class:SynchroDataSource/Attribute:delete_policy_retention' => '保持時間',
'Class:SynchroDataSource/Attribute:delete_policy_retention+' => '廃止されたオブジェクトを削除するまでに保持しておく時間',
'SynchroDataSource:Description' => '説明',
'SynchroDataSource:Reconciliation' => '検索と調整',
'SynchroDataSource:Deletion' => '削除ルール',
'SynchroDataSource:Status' => '状態',
'SynchroDataSource:Information' => 'インフォメーション',
'SynchroDataSource:Definition' => '定義',
'Core:SynchroAttributes' => '属性',
'Core:SynchroStatus' => '状態',
'Core:Synchro:ErrorsLabel' => 'エラー',
'Core:Synchro:CreatedLabel' => '作成',
'Core:Synchro:ModifiedLabel' => '修正',
'Core:Synchro:UnchangedLabel' => '無変更',
'Core:Synchro:ReconciledErrorsLabel' => 'エラー',
'Core:Synchro:ReconciledLabel' => '調整',
'Core:Synchro:ReconciledNewLabel' => '新',
'Core:SynchroReconcile:Yes' => 'はい',
'Core:SynchroReconcile:No' => 'いいえ',
'Core:SynchroUpdate:Yes' => 'はい',
'Core:SynchroUpdate:No' => 'いいえ',
'Core:Synchro:LastestStatus' => '最新の状態',
'Core:Synchro:History' => '同期履歴',
'Core:Synchro:NeverRun' => 'この同期は実行されたことがありません。ログはありません。',
'Core:Synchro:SynchroEndedOn_Date' => '最後の同期は %1$s に終了しました。',
'Core:Synchro:SynchroRunningStartedOn_Date' => '同期は %1$s に始まり、現在実行中です。',
'Menu:DataSources' => '同期データソース',
'Menu:DataSources+' => '全ての同期データソース',
'Core:Synchro:label_repl_ignored' => '無視 (%1$s)',
'Core:Synchro:label_repl_disappeared' => '消えた (%1$s)',
'Core:Synchro:label_repl_existing' => '存在 (%1$s)',
'Core:Synchro:label_repl_new' => '新しい (%1$s)',
'Core:Synchro:label_obj_deleted' => '削除 (%1$s)',
'Core:Synchro:label_obj_obsoleted' => '廃止 (%1$s)',
'Core:Synchro:label_obj_disappeared_errors' => 'エラー (%1$s)',
'Core:Synchro:label_obj_disappeared_no_action' => '何もしない (%1$s)',
'Core:Synchro:label_obj_unchanged' => '無変更 (%1$s)',
'Core:Synchro:label_obj_updated' => '更新 (%1$s)',
'Core:Synchro:label_obj_updated_errors' => 'エラー (%1$s)',
'Core:Synchro:label_obj_new_unchanged' => '無変更 (%1$s)',
'Core:Synchro:label_obj_new_updated' => '無変更 (%1$s)',
'Core:Synchro:label_obj_created' => '作成 (%1$s)',
'Core:Synchro:label_obj_new_errors' => 'エラー (%1$s)',
'Core:Synchro:History' => '同期履歴',
'Core:SynchroLogTitle' => '%1$s - %2$s',
'Core:Synchro:Nb_Replica' => 'レプリカプロセス: %1$s',
'Core:Synchro:Nb_Class:Objects' => '%1$s: %2$s',
'Class:SynchroDataSource/Error:AtLeastOneReconciliationKeyMustBeSpecified' => '少なくとも一つの調整キーが必要です。または、調整ポリシーは主キーを使用しなければなりません。',
'Class:SynchroDataSource/Error:DeleteRetentionDurationMustBeSpecified' => 'オブジェクトは廃止としてマークされた後に削除されますので、削除の保存期間を指定する必要があります。',
'Class:SynchroDataSource/Error:DeletePolicyUpdateMustBeSpecified' => '廃止されたオブジェクトは更新されます、しかし、更新は指定されていません。',
'Core:SynchroReplica:PublicData' => 'パブリックデータ',
'Core:SynchroReplica:PrivateDetails' => 'プライベート詳細',
'Core:SynchroReplica:BackToDataSource' => '同期データソースへ戻る: %1$s',
'Core:SynchroReplica:ListOfReplicas' => 'レプリカのリスト',
'Core:SynchroAttExtKey:ReconciliationById' => 'id (主キー)',
'Core:SynchroAtt:attcode' => '属性',
'Core:SynchroAtt:attcode+' => 'オブジェクトのフィールド',
'Core:SynchroAtt:reconciliation' => '調整 ?',
'Core:SynchroAtt:reconciliation+' => '検索に使用',
'Core:SynchroAtt:update' => '更新 ?',
'Core:SynchroAtt:update+' => 'オブジェクトの更新のため使用',
'Core:SynchroAtt:update_policy' => '更新ポリシー',
'Core:SynchroAtt:update_policy+' => '更新されたフィールドの振る舞い',
'Core:SynchroAtt:reconciliation_attcode' => '調整キー',
'Core:SynchroAtt:reconciliation_attcode+' => '外部キー調整用の属性コード',
'Core:SyncDataExchangeComment' => '(データ同期)',
'Core:Synchro:ListOfDataSources' => 'データソースのリスト:',
'Core:Synchro:LastSynchro' => '最後の同期:',
'Core:Synchro:ThisObjectIsSynchronized' => 'このオブジェクトは、外部データソースと同期されます。',
'Core:Synchro:TheObjectWasCreatedBy_Source' => 'このオブジェクトは、外部データソース%1$sにより<b>作成</b>されました。',
'Core:Synchro:TheObjectCanBeDeletedBy_Source' => 'オブジェクトは、外部データソース%1$sにより削除可能です。',
'Core:Synchro:TheObjectCannotBeDeletedByUser_Source' => 'このオブジェクトは、外部データソースに保持されているので削除できません。',
'TitleSynchroExecution' => '同期の実行',
'Class:SynchroDataSource:DataTable' => 'データベーステーブル: %1$s',
'Core:SyncDataSourceObsolete' => 'データソースは廃止とマークされています。操作はキャンセルされました。',
'Core:SyncDataSourceAccessRestriction' => '管理者またはデータ·ソースに指定されたユーザーのみ、この操作を実行することができます。操作はキャンセルされました。',
'Core:SyncTooManyMissingReplicas' => '暫くの間全てのレコードは変更されていません。(全てのオブジェクトが削除される可能性があります。)同期テーブルへ書き込むプロセスがまだ実行中であることを確認ください。操作は、キャンセルされました。',
'Core:SyncSplitModeCLIOnly' => 'CLIモードでの実行時のみチャンクで同期を実行することが出来ます。',
'Core:Synchro:ListReplicas_AllReplicas_Errors_Warnings' => '%1$s レプリカ、 %2$s エラー、 %3$s 警告。',
'Core:SynchroReplica:TargetObject' => '同期されたオブジェクト: %1$s',
'Class:AsyncSendEmail' => '電子メール (非同期)',
'Class:AsyncSendEmail/Attribute:to' => 'To',
'Class:AsyncSendEmail/Attribute:subject' => '件名',
'Class:AsyncSendEmail/Attribute:body' => '本文',
'Class:AsyncSendEmail/Attribute:header' => 'ヘッダー',
'Class:CMDBChangeOpSetAttributeOneWayPassword' => '暗号化パスワード',
'Class:CMDBChangeOpSetAttributeOneWayPassword/Attribute:prev_pwd' => '以前の値',
'Class:CMDBChangeOpSetAttributeEncrypted' => '暗号化フィールド',
'Class:CMDBChangeOpSetAttributeEncrypted/Attribute:prevstring' => '以前の値',
'Class:CMDBChangeOpSetAttributeCaseLog' => 'ケースログ',
'Class:CMDBChangeOpSetAttributeCaseLog/Attribute:lastentry' => '最後のエントリー',
'Class:SynchroDataSource' => '同期データソース',
'Class:SynchroDataSource/Attribute:status/Value:implementation' => '実装中',
'Class:SynchroDataSource/Attribute:status/Value:obsolete' => '廃止済',
'Class:SynchroDataSource/Attribute:status/Value:production' => '稼働中',
'Class:SynchroDataSource/Attribute:scope_restriction' => '範囲の制限',
'Class:SynchroDataSource/Attribute:reconciliation_policy/Value:use_attributes' => '属性を使用',
'Class:SynchroDataSource/Attribute:reconciliation_policy/Value:use_primary_key' => '主キーフィールドを使用',
'Class:SynchroDataSource/Attribute:action_on_zero/Value:create' => '作成',
'Class:SynchroDataSource/Attribute:action_on_zero/Value:error' => 'エラー',
'Class:SynchroDataSource/Attribute:action_on_one/Value:error' => 'エラー',
'Class:SynchroDataSource/Attribute:action_on_one/Value:update' => '更新',
'Class:SynchroDataSource/Attribute:action_on_multiple/Value:create' => '作成',
'Class:SynchroDataSource/Attribute:action_on_multiple/Value:error' => 'エラー',
'Class:SynchroDataSource/Attribute:action_on_multiple/Value:take_first' => '最初を採用 (ランダム?)',
'Class:SynchroDataSource/Attribute:delete_policy' => '削除ポリシー',
'Class:SynchroDataSource/Attribute:delete_policy/Value:delete' => '削除',
'Class:SynchroDataSource/Attribute:delete_policy/Value:ignore' => '無視',
'Class:SynchroDataSource/Attribute:delete_policy/Value:update' => '更新',
'Class:SynchroDataSource/Attribute:delete_policy/Value:update_then_delete' => '更新そして削除',
'Class:SynchroDataSource/Attribute:attribute_list' => '属性リスト',
'Class:SynchroDataSource/Attribute:user_delete_policy/Value:administrators' => '管理者のみ',
'Class:SynchroDataSource/Attribute:user_delete_policy/Value:everybody' => '誰でもがそのようなオブジェクトを削除出来ます。',
'Class:SynchroDataSource/Attribute:user_delete_policy/Value:nobody' => 'nobody',
'Class:SynchroAttribute' => '同期属性',
'Class:SynchroAttribute/Attribute:sync_source_id' => '同期データソース',
'Class:SynchroAttribute/Attribute:attcode' => '属性コード',
'Class:SynchroAttribute/Attribute:update' => '更新',
'Class:SynchroAttribute/Attribute:reconcile' => '調整',
'Class:SynchroAttribute/Attribute:update_policy' => '更新ポリシー',
'Class:SynchroAttribute/Attribute:update_policy/Value:master_locked' => 'ロック',
'Class:SynchroAttribute/Attribute:update_policy/Value:master_unlocked' => 'アンロック',
'Class:SynchroAttribute/Attribute:update_policy/Value:write_if_empty' => '空の場合は、初期化',
'Class:SynchroAttribute/Attribute:finalclass' => 'クラス',
'Class:SynchroAttExtKey' => '同期属性 (外部キー)',
'Class:SynchroAttExtKey/Attribute:reconciliation_attcode' => '調整属性',
'Class:SynchroAttLinkSet' => '同期属性 (リンクセット)',
'Class:SynchroAttLinkSet/Attribute:row_separator' => '行の区切り',
'Class:SynchroAttLinkSet/Attribute:attribute_separator' => '属性区切り',
'Class:SynchroLog' => '同期ログ',
'Class:SynchroLog/Attribute:sync_source_id' => '同期データソース',
'Class:SynchroLog/Attribute:start_date' => '開始日',
'Class:SynchroLog/Attribute:end_date' => '終了日',
'Class:SynchroLog/Attribute:status' => '状態',
'Class:SynchroLog/Attribute:status/Value:completed' => '完了',
'Class:SynchroLog/Attribute:status/Value:error' => 'エラー',
'Class:SynchroLog/Attribute:status/Value:running' => '実行中',
'Class:SynchroLog/Attribute:stats_nb_replica_seen' => 'のレプリカ ',
'Class:SynchroLog/Attribute:stats_nb_replica_total' => 'レプリカ合計 ',
'Class:SynchroLog/Attribute:stats_nb_obj_deleted' => 'オブジェクト削除 ',
'Class:SynchroLog/Attribute:stats_nb_obj_deleted_errors' => '削除中のエラー ',
'Class:SynchroLog/Attribute:stats_nb_obj_obsoleted' => 'オブジェクト廃止 ',
'Class:SynchroLog/Attribute:stats_nb_obj_obsoleted_errors' => '廃止中のエラー ',
'Class:SynchroLog/Attribute:stats_nb_obj_created' => 'オブジェクト作成 ',
'Class:SynchroLog/Attribute:stats_nb_obj_created_errors' => '作成中のエラー ',
'Class:SynchroLog/Attribute:stats_nb_obj_updated' => 'オブジェクト更新 ',
'Class:SynchroLog/Attribute:stats_nb_obj_updated_errors' => '更新中のエラー ',
'Class:SynchroLog/Attribute:stats_nb_replica_reconciled_errors' => '調整中のエラー ',
'Class:SynchroLog/Attribute:stats_nb_replica_disappeared_no_action' => 'レプリカ消 ',
'Class:SynchroLog/Attribute:stats_nb_obj_new_updated' => ' オブジェクトは更新されました',
'Class:SynchroLog/Attribute:stats_nb_obj_new_unchanged' => ' オブジェクトは変更されていません',
'Class:SynchroLog/Attribute:last_error' => '最後のエラー',
'Class:SynchroLog/Attribute:traces' => 'トレース',
'Class:SynchroReplica' => '同期レプリカ',
'Class:SynchroReplica/Attribute:sync_source_id' => '同期データソース',
'Class:SynchroReplica/Attribute:dest_id' => '同期先オブジェクト (ID)',
'Class:SynchroReplica/Attribute:dest_class' => '同期先タイプ',
'Class:SynchroReplica/Attribute:status_last_seen' => 'ラストシーン',
'Class:SynchroReplica/Attribute:status' => '状態',
'Class:SynchroReplica/Attribute:status/Value:modified' => '修正済み',
'Class:SynchroReplica/Attribute:status/Value:new' => '新規',
'Class:SynchroReplica/Attribute:status/Value:obsolete' => '廃止',
'Class:SynchroReplica/Attribute:status/Value:orphan' => '孤立',
'Class:SynchroReplica/Attribute:status/Value:synchronized' => '同期済み',
'Class:SynchroReplica/Attribute:status_dest_creator' => 'オブジェクト作成 ?',
'Class:SynchroReplica/Attribute:status_last_error' => '最後のエラー',
'Class:SynchroReplica/Attribute:status_last_warning' => '警告',
'Class:SynchroReplica/Attribute:info_creation_date' => '作成日',
'Class:SynchroReplica/Attribute:info_last_modified' => '最終修正日',
'Class:appUserPreferences' => 'ユーザプリファレンス',
'Class:appUserPreferences/Attribute:userid' => 'ユーザ',
'Class:appUserPreferences/Attribute:preferences' => 'プリファレンス',
'Core:ExecProcess:Code1' => '間違ったコマンドまたはエラーで終了したコマンド(例えば、間違ったスクリプト名)',
'Core:ExecProcess:Code255' => 'PHP エラー (parsing, or runtime)',
));
//
// Attribute Duration
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Core:Duration_Seconds' => '%1$ds',
'Core:Duration_Minutes_Seconds' =>'%1$d分 %2$d秒',
'Core:Duration_Hours_Minutes_Seconds' => '%1$d時 %2$d分 %3$d秒',
'Core:Duration_Days_Hours_Minutes_Seconds' => '%1$s日 %2$d時 %3$d分 %4$d秒',
));
?>

File diff suppressed because it is too large Load Diff

View File

@@ -136,6 +136,12 @@ function WizardHelper(sClass, sFormPrefix, sState)
}
}
this.UpdateWizardToJSON = function ()
{
this.UpdateWizard();
return this.ToJSON()
}
this.AjaxQueryServer = function ()
{
//console.log('data sent:', this.ToJSON());

View File

@@ -20,7 +20,6 @@
* @author Erwan Taloc <erwan.taloc@combodo.com>
* @author Romain Quetiez <romain.quetiez@combodo.com>
* @author Denis Flaven <denis.flaven@combodo.com>
* @author Hirofumi Kosaka <kosaka@rworks.jp>
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
*/
@@ -39,8 +38,8 @@
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:UserExternal' => '外部ユーザー', # 'External user',
'Class:UserExternal+' => '外部認証ユーザー', # 'User authentified outside of iTop',
'Class:UserExternal' => '外部ユーザー',
'Class:UserExternal+' => 'iTopの外で認証されたユーザー',
));

View File

@@ -20,7 +20,6 @@
* @author Erwan Taloc <erwan.taloc@combodo.com>
* @author Romain Quetiez <romain.quetiez@combodo.com>
* @author Denis Flaven <denis.flaven@combodo.com>
* @author Hirofumi Kosaka <kosaka@rworks.jp>
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
*/
@@ -40,7 +39,7 @@
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:UserLDAP' => 'LDAP ユーザー', # 'LDAP user',
'Class:UserLDAP+' => 'LDAP認証ユーザー', # 'User authentified by LDAP',
'Class:UserLDAP+' => 'LDAPにて認証されたユーザー', # 'User authentified by LDAP',
'Class:UserLDAP/Attribute:password' => 'パスワード', # 'Password',
'Class:UserLDAP/Attribute:password+' => '認証文字列', # 'user authentication string',
));

View File

@@ -120,7 +120,7 @@ class UserLDAP extends UserInternal
$aEntry = ldap_get_entries($hDS, $hSearchResult);
$sUserDN = $aEntry[0]['dn'];
$bUserBind = @ldap_bind($hDS, $sUserDN, $sPassword);
if ($bUserBind !== false)
if (($bUserBind !== false) && !empty($sPassword))
{
ldap_unbind($hDS);
return true; // Password Ok

View File

@@ -20,7 +20,6 @@
* @author Erwan Taloc <erwan.taloc@combodo.com>
* @author Romain Quetiez <romain.quetiez@combodo.com>
* @author Denis Flaven <denis.flaven@combodo.com>
* @author Hirofumi Kosaka <kosaka@rworks.jp>
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
*/
@@ -39,10 +38,10 @@
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:UserLocal' => 'iTopユーザー', // 'iTop user',
'Class:UserLocal+' => 'iTopローカル認証ユーザー', // 'User authentified by iTop',
'Class:UserLocal/Attribute:password' => 'パスワード', // 'Password',
'Class:UserLocal/Attribute:password+' => '認証文字列', // 'user authentication string',
'Class:UserLocal' => 'iTopユーザー',
'Class:UserLocal+' => 'iTopで認証されるユーザー',
'Class:UserLocal/Attribute:password' => 'パスワード',
'Class:UserLocal/Attribute:password+' => 'ユーザ認証文字列',
));

View File

@@ -468,7 +468,7 @@ EOF
$oPage->p(Dict::S('Attachments:AddAttachment').'<input type="file" name="file" id="file" onChange="ajaxFileUpload();"><span style="display:none;" id="attachment_loading">&nbsp;<img src="../images/indicator.gif"></span> '.$sMaxUpload);
//$oPage->p('<input type="button" onClick="ajaxFileUpload();" value=" Upload !">');
$oPage->p('<span style="display:none;" id="attachment_loading">Loading, please wait...</span>');
$oPage->p('<input type="hidden" id="attachment_plugin"/>');
$oPage->p('<input type="hidden" id="attachment_plugin" name="attachment_plugin"/>');
$oPage->add('</fieldset>');
if ($this->m_bDeleteEnabled)
{
@@ -499,6 +499,12 @@ EOF
protected static function UpdateAttachments($oObject, $oChange = null)
{
if (utils::ReadParam('attachment_plugin', 'not-in-form') == 'not-in-form')
{
// Workaround to an issue in iTop < 2.0
// Leave silently if there is no trace of the attachment form
return;
}
$iTransactionId = utils::ReadParam('transaction_id', null);
if (!is_null($iTransactionId))
{

View File

@@ -20,28 +20,27 @@
* @author Erwan Taloc <erwan.taloc@combodo.com>
* @author Romain Quetiez <romain.quetiez@combodo.com>
* @author Denis Flaven <denis.flaven@combodo.com>
* @author Hirofumi Kosaka <kosaka@rworks.jp>
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
*/
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Menu:ChangeManagement' => '変更管理', # 'Change management',
'Menu:Change:Overview' => '概要', # 'Overview',
'Menu:Change:Overview+' => '', # '',
'Menu:NewChange' => '新規変更', # 'New Change',
'Menu:NewChange+' => '新規変更のチケット作成', # 'Create a new Change ticket',
'Menu:SearchChanges' => '変更検索', # 'Search for Changes',
'Menu:SearchChanges+' => '変更チケット検索', # 'Search for Change tickets',
'Menu:Change:Shortcuts' => 'ショートカット', # 'Shortcuts',
'Menu:Change:Shortcuts+' => '', # '',
'Menu:WaitingAcceptance' => '受理待ちの変更', # 'Changes awaiting acceptance',
'Menu:WaitingAcceptance+' => '', # '',
'Menu:WaitingApproval' => '承認待ちの変更', # 'Changes awaiting approval',
'Menu:WaitingApproval+' => '', # '',
'Menu:Changes' => '担当のいない変更', # 'Opened changes',
'Menu:Changes+' => '', # '',
'Menu:MyChanges' => '担当している変更', # 'Changes assigned to me',
'Menu:MyChanges+' => '担当している変更(エージェント)', # 'Changes assigned to me (as Agent)',
'Menu:ChangeManagement' => '変更管理',
'Menu:Change:Overview' => '概要',
'Menu:Change:Overview+' => '',
'Menu:NewChange' => '新規変更',
'Menu:NewChange+' => '新規変更のチケット作成',
'Menu:SearchChanges' => '変更検索',
'Menu:SearchChanges+' => '変更チケット検索',
'Menu:Change:Shortcuts' => 'ショートカット',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => '受理待ちの変更',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => '承認待ちの変更',
'Menu:WaitingApproval+' => '',
'Menu:Changes' => 'オープン状態の変更',
'Menu:Changes+' => '',
'Menu:MyChanges' => '担当している変更',
'Menu:MyChanges+' => '担当している変更(エージェントとして)',
));
// Dictionnay conventions
@@ -60,110 +59,110 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:Change' => '変更', # 'Change',
'Class:Change+' => '', # '',
'Class:Change/Attribute:start_date' => '開始計画日', # 'Planned startup',
'Class:Change/Attribute:start_date+' => '', # '',
'Class:Change/Attribute:status' => 'ステータス', # 'Status',
'Class:Change/Attribute:status+' => '', # '',
'Class:Change/Attribute:status/Value:new' => '新規', # 'New',
'Class:Change/Attribute:status/Value:new+' => '', # '',
'Class:Change/Attribute:status/Value:validated' => '受付済', # 'Validated',
'Class:Change/Attribute:status/Value:validated+' => '', # '',
'Class:Change/Attribute:status/Value:rejected' => '却下済', # 'Rejected',
'Class:Change/Attribute:status/Value:rejected+' => '', # '',
'Class:Change/Attribute:status/Value:assigned' => '割当済', # 'Assigned',
'Class:Change/Attribute:status/Value:assigned+' => '', # '',
'Class:Change/Attribute:status/Value:plannedscheduled' => '計画・予定された', # 'Planned and scheduled',
'Class:Change/Attribute:status/Value:plannedscheduled+' => '', # '',
'Class:Change/Attribute:status/Value:approved' => '承認済', # 'Approved',
'Class:Change/Attribute:status/Value:approved+' => '', # '',
'Class:Change/Attribute:status/Value:notapproved' => '未承認', # 'Not approved',
'Class:Change/Attribute:status/Value:notapproved+' => '', # '',
'Class:Change/Attribute:status/Value:implemented' => '実施済み', # 'Implemented',
'Class:Change/Attribute:status/Value:implemented+' => '', # '',
'Class:Change/Attribute:status/Value:monitored' => '経過観察', # 'Monitored',
'Class:Change/Attribute:status/Value:monitored+' => '', # '',
'Class:Change/Attribute:status/Value:closed' => '完了', # 'Closed',
'Class:Change/Attribute:status/Value:closed+' => '', # '',
'Class:Change/Attribute:reason' => '理由', # 'Reason',
'Class:Change/Attribute:reason+' => '', # '',
'Class:Change/Attribute:requestor_id' => '依頼者', # 'Requestor',
'Class:Change/Attribute:requestor_id+' => '', # '',
'Class:Change/Attribute:requestor_email' => '依頼者', # 'Requestor',
'Class:Change/Attribute:requestor_email+' => '', # '',
'Class:Change/Attribute:org_id' => '顧客', # 'Customer',
'Class:Change/Attribute:org_id+' => '', # '',
'Class:Change/Attribute:org_name' => '顧客', # 'Customer',
'Class:Change/Attribute:org_name+' => '', # '',
'Class:Change/Attribute:workgroup_id' => '作業グループ', # 'Workgroup',
'Class:Change/Attribute:workgroup_id+' => '', # '',
'Class:Change/Attribute:workgroup_name' => '作業グループ', # 'Workgroup',
'Class:Change/Attribute:workgroup_name+' => '', # '',
'Class:Change/Attribute:creation_date' => '作成', # 'Created',
'Class:Change/Attribute:creation_date+' => '', # '',
'Class:Change/Attribute:last_update' => '最終更新', # 'Last update',
'Class:Change/Attribute:last_update+' => '', # '',
'Class:Change/Attribute:end_date' => '作業終了', # 'End date',
'Class:Change/Attribute:end_date+' => '', # '',
'Class:Change/Attribute:close_date' => '完了', # 'Closed',
'Class:Change/Attribute:close_date+' => '', # '',
'Class:Change/Attribute:impact' => '影響', # 'Impact',
'Class:Change/Attribute:impact+' => '', # '',
'Class:Change/Attribute:agent_id' => 'エージェント', # 'Agent',
'Class:Change/Attribute:agent_id+' => '', # '',
'Class:Change/Attribute:agent_name' => 'エージェント', # 'Agent',
'Class:Change/Attribute:agent_name+' => '', # '',
'Class:Change/Attribute:agent_email' => 'エージェント', # 'Agent','Agent', # 'Agent',
'Class:Change/Attribute:agent_email+' => '', # '',
'Class:Change/Attribute:supervisor_group_id' => '監督者チーム', # 'Supervisor team',
'Class:Change/Attribute:supervisor_group_id+' => '', # '',
'Class:Change/Attribute:supervisor_group_name' => '監督者チーム', # 'Supervisor team',
'Class:Change/Attribute:supervisor_group_name+' => '', # '',
'Class:Change/Attribute:supervisor_id' => '監督者', # 'Supervisor',
'Class:Change/Attribute:supervisor_id+' => '', # '',
'Class:Change/Attribute:supervisor_email' => '監督者', # 'Supervisor',
'Class:Change/Attribute:supervisor_email+' => '', # '',
'Class:Change/Attribute:manager_group_id' => 'マネジャーチーム', # 'Manager team',
'Class:Change/Attribute:manager_group_id+' => '', # '',
'Class:Change/Attribute:manager_group_name' => 'マネジャーチーム', # 'Manager team',
'Class:Change/Attribute:manager_group_name+' => '', # '',
'Class:Change/Attribute:manager_id' => 'マネジャー', # 'Manager',
'Class:Change/Attribute:manager_id+' => '', # '',
'Class:Change/Attribute:manager_email' => 'マネジャー', # 'Manager',
'Class:Change/Attribute:manager_email+' => '', # '',
'Class:Change/Attribute:outage' => '停止', # 'Outage',
'Class:Change/Attribute:outage+' => '', # '',
'Class:Change/Attribute:outage/Value:yes' => 'はい', # 'Yes',
'Class:Change/Attribute:outage/Value:yes+' => '', # '',
'Class:Change/Attribute:outage/Value:no' => 'いいえ', # 'No',
'Class:Change/Attribute:outage/Value:no+' => '', # '',
'Class:Change/Attribute:change_request' => 'リクエスト', # 'Request',
'Class:Change/Attribute:change_request+' => '', # '',
'Class:Change/Attribute:fallback' => '代替計画', # 'Fallback plan',
'Class:Change/Attribute:fallback+' => '', # '',
'Class:Change/Stimulus:ev_validate' => '受', # 'Validate',
'Class:Change/Stimulus:ev_validate+' => '', # '',
'Class:Change/Stimulus:ev_reject' => '却下', # 'Reject',
'Class:Change/Stimulus:ev_reject+' => '', # '',
'Class:Change/Stimulus:ev_assign' => '担当割', # 'Assign',
'Class:Change/Stimulus:ev_assign+' => '', # '',
'Class:Change/Stimulus:ev_reopen' => '再開', # 'Reopen',
'Class:Change/Stimulus:ev_reopen+' => '', # '',
'Class:Change/Stimulus:ev_plan' => '計画', # 'Plan',
'Class:Change/Stimulus:ev_plan+' => '', # '',
'Class:Change/Stimulus:ev_approve' => '承認', # 'Approve',
'Class:Change/Stimulus:ev_approve+' => '', # '',
'Class:Change/Stimulus:ev_replan' => '再計画', # 'Replan',
'Class:Change/Stimulus:ev_replan+' => '', # '',
'Class:Change/Stimulus:ev_notapprove' => '却下', # 'Reject',
'Class:Change/Stimulus:ev_notapprove+' => '', # '',
'Class:Change/Stimulus:ev_implement' => '実施', # 'Implement',
'Class:Change/Stimulus:ev_implement+' => '', # '',
'Class:Change/Stimulus:ev_monitor' => '経過観察', # 'Monitor',
'Class:Change/Stimulus:ev_monitor+' => '', # '',
'Class:Change/Stimulus:ev_finish' => '作業終了', # 'Finish',
'Class:Change/Stimulus:ev_finish+' => '', # '',
'Class:Change' => '変更',
'Class:Change+' => '',
'Class:Change/Attribute:start_date' => '開始計画日',
'Class:Change/Attribute:start_date+' => '',
'Class:Change/Attribute:status' => '状態',
'Class:Change/Attribute:status+' => '',
'Class:Change/Attribute:status/Value:new' => '新規',
'Class:Change/Attribute:status/Value:new+' => '',
'Class:Change/Attribute:status/Value:validated' => '受け付け済み',
'Class:Change/Attribute:status/Value:validated+' => '',
'Class:Change/Attribute:status/Value:rejected' => '却下済',
'Class:Change/Attribute:status/Value:rejected+' => '',
'Class:Change/Attribute:status/Value:assigned' => '割り当て済み',
'Class:Change/Attribute:status/Value:assigned+' => '',
'Class:Change/Attribute:status/Value:plannedscheduled' => '計画・予定された',
'Class:Change/Attribute:status/Value:plannedscheduled+' => '',
'Class:Change/Attribute:status/Value:approved' => '承認済',
'Class:Change/Attribute:status/Value:approved+' => '',
'Class:Change/Attribute:status/Value:notapproved' => '未承認',
'Class:Change/Attribute:status/Value:notapproved+' => '',
'Class:Change/Attribute:status/Value:implemented' => '実施済み',
'Class:Change/Attribute:status/Value:implemented+' => '',
'Class:Change/Attribute:status/Value:monitored' => '経過観察',
'Class:Change/Attribute:status/Value:monitored+' => '',
'Class:Change/Attribute:status/Value:closed' => 'クローズ',
'Class:Change/Attribute:status/Value:closed+' => '',
'Class:Change/Attribute:reason' => '理由',
'Class:Change/Attribute:reason+' => '',
'Class:Change/Attribute:requestor_id' => '依頼者',
'Class:Change/Attribute:requestor_id+' => '',
'Class:Change/Attribute:requestor_email' => '依頼者',
'Class:Change/Attribute:requestor_email+' => '',
'Class:Change/Attribute:org_id' => '顧客',
'Class:Change/Attribute:org_id+' => '',
'Class:Change/Attribute:org_name' => '顧客',
'Class:Change/Attribute:org_name+' => '',
'Class:Change/Attribute:workgroup_id' => '作業グループ',
'Class:Change/Attribute:workgroup_id+' => '',
'Class:Change/Attribute:workgroup_name' => '作業グループ',
'Class:Change/Attribute:workgroup_name+' => '',
'Class:Change/Attribute:creation_date' => '作成',
'Class:Change/Attribute:creation_date+' => '',
'Class:Change/Attribute:last_update' => '最終更新',
'Class:Change/Attribute:last_update+' => '',
'Class:Change/Attribute:end_date' => '終了',
'Class:Change/Attribute:end_date+' => '',
'Class:Change/Attribute:close_date' => 'クローズ',
'Class:Change/Attribute:close_date+' => '',
'Class:Change/Attribute:impact' => 'インパクト',
'Class:Change/Attribute:impact+' => '',
'Class:Change/Attribute:agent_id' => 'エージェント',
'Class:Change/Attribute:agent_id+' => '',
'Class:Change/Attribute:agent_name' => 'エージェント',
'Class:Change/Attribute:agent_name+' => '',
'Class:Change/Attribute:agent_email' => 'エージェント',
'Class:Change/Attribute:agent_email+' => '',
'Class:Change/Attribute:supervisor_group_id' => '監督者チーム',
'Class:Change/Attribute:supervisor_group_id+' => '',
'Class:Change/Attribute:supervisor_group_name' => '監督者チーム',
'Class:Change/Attribute:supervisor_group_name+' => '',
'Class:Change/Attribute:supervisor_id' => '監督者',
'Class:Change/Attribute:supervisor_id+' => '',
'Class:Change/Attribute:supervisor_email' => '監督者',
'Class:Change/Attribute:supervisor_email+' => '',
'Class:Change/Attribute:manager_group_id' => 'マネジャーチーム',
'Class:Change/Attribute:manager_group_id+' => '',
'Class:Change/Attribute:manager_group_name' => 'マネジャーチーム',
'Class:Change/Attribute:manager_group_name+' => '',
'Class:Change/Attribute:manager_id' => 'マネジャー',
'Class:Change/Attribute:manager_id+' => '',
'Class:Change/Attribute:manager_email' => 'マネジャー',
'Class:Change/Attribute:manager_email+' => '',
'Class:Change/Attribute:outage' => '停止',
'Class:Change/Attribute:outage+' => '',
'Class:Change/Attribute:outage/Value:yes' => 'はい',
'Class:Change/Attribute:outage/Value:yes+' => '',
'Class:Change/Attribute:outage/Value:no' => 'いいえ',
'Class:Change/Attribute:outage/Value:no+' => '',
'Class:Change/Attribute:change_request' => '要求',
'Class:Change/Attribute:change_request+' => '',
'Class:Change/Attribute:fallback' => '代替計画',
'Class:Change/Attribute:fallback+' => '',
'Class:Change/Stimulus:ev_validate' => '受け付け',
'Class:Change/Stimulus:ev_validate+' => '',
'Class:Change/Stimulus:ev_reject' => '却下',
'Class:Change/Stimulus:ev_reject+' => '',
'Class:Change/Stimulus:ev_assign' => '担当割り当て',
'Class:Change/Stimulus:ev_assign+' => '',
'Class:Change/Stimulus:ev_reopen' => '再開',
'Class:Change/Stimulus:ev_reopen+' => '',
'Class:Change/Stimulus:ev_plan' => '計画',
'Class:Change/Stimulus:ev_plan+' => '',
'Class:Change/Stimulus:ev_approve' => '承認',
'Class:Change/Stimulus:ev_approve+' => '',
'Class:Change/Stimulus:ev_replan' => '再計画',
'Class:Change/Stimulus:ev_replan+' => '',
'Class:Change/Stimulus:ev_notapprove' => '却下',
'Class:Change/Stimulus:ev_notapprove+' => '',
'Class:Change/Stimulus:ev_implement' => '実施',
'Class:Change/Stimulus:ev_implement+' => '',
'Class:Change/Stimulus:ev_monitor' => '経過観察',
'Class:Change/Stimulus:ev_monitor+' => '',
'Class:Change/Stimulus:ev_finish' => '終了',
'Class:Change/Stimulus:ev_finish+' => '',
));
//
@@ -171,38 +170,41 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:RoutineChange' => '定期変更', # 'Routine Change',
'Class:RoutineChange+' => '', # '',
'Class:RoutineChange/Attribute:status/Value:new' => '新規', # 'New',
'Class:RoutineChange/Attribute:status/Value:new+' => '', # '',
'Class:RoutineChange/Attribute:status/Value:assigned' => '割当済', # 'Assigned',
'Class:RoutineChange/Attribute:status/Value:assigned+' => '', # '',
'Class:RoutineChange/Attribute:status/Value:plannedscheduled' => '計画・予定された', # 'Planned and scheduled',
'Class:RoutineChange/Attribute:status/Value:plannedscheduled+' => '', # '',
'Class:RoutineChange/Attribute:status/Value:approved' => '承認済', # 'Approved',
'Class:RoutineChange/Attribute:status/Value:approved+' => '', # '',
'Class:RoutineChange/Attribute:status/Value:implemented' => '実施済', # 'Implemented',
'Class:RoutineChange/Attribute:status/Value:implemented+' => '', # '',
'Class:RoutineChange/Attribute:status/Value:monitored' => '経過観察中', # 'Monitored',
'Class:RoutineChange/Attribute:status/Value:monitored+' => '', # '',
'Class:RoutineChange/Attribute:status/Value:closed' => '完了', # 'Closed',
'Class:RoutineChange/Attribute:status/Value:closed+' => '', # '',
'Class:RoutineChange/Stimulus:ev_validate' => '受', # 'Validate',
'Class:RoutineChange/Stimulus:ev_validate+' => '', # '',
'Class:RoutineChange/Stimulus:ev_assign' => '担当割当', # 'Assign',
'Class:RoutineChange/Stimulus:ev_assign+' => '', # '',
'Class:RoutineChange/Stimulus:ev_reopen' => '再', # 'Reopen',
'Class:RoutineChange/Stimulus:ev_reopen+' => '', # '',
'Class:RoutineChange/Stimulus:ev_plan' => '計画', # 'Plan',
'Class:RoutineChange/Stimulus:ev_plan+' => '', # '',
'Class:RoutineChange/Stimulus:ev_replan' => '再計画', # 'Replan',
'Class:RoutineChange/Stimulus:ev_replan+' => '', # '',
'Class:RoutineChange/Stimulus:ev_implement' => '実施', # 'Implement',
'Class:RoutineChange/Stimulus:ev_implement+' => '', # '',
'Class:RoutineChange/Stimulus:ev_monitor' => '経過観察', # 'Monitor',
'Class:RoutineChange/Stimulus:ev_monitor+' => '', # '',
'Class:RoutineChange/Stimulus:ev_finish' => '作業終了', # 'Finish',
'Class:RoutineChange/Stimulus:ev_finish+' => '', # '',
'Class:RoutineChange' => 'ルーチン変更',
'Class:RoutineChange+' => '',
'Class:RoutineChange/Attribute:status/Value:new' => '新規',
'Class:RoutineChange/Attribute:status/Value:new+' => '',
'Class:RoutineChange/Attribute:status/Value:assigned' => '割当済',
'Class:RoutineChange/Attribute:status/Value:assigned+' => '',
'Class:RoutineChange/Attribute:status/Value:plannedscheduled' => '計画・予定された',
'Class:RoutineChange/Attribute:status/Value:plannedscheduled+' => '',
'Class:RoutineChange/Attribute:status/Value:approved' => '承認済',
'Class:RoutineChange/Attribute:status/Value:approved+' => '',
'Class:RoutineChange/Attribute:status/Value:implemented' => '実施済',
'Class:RoutineChange/Attribute:status/Value:implemented+' => '',
'Class:RoutineChange/Attribute:status/Value:monitored' => '経過観察中',
'Class:RoutineChange/Attribute:status/Value:monitored+' => '',
'Class:RoutineChange/Attribute:status/Value:closed' => 'クローズ',
'Class:RoutineChange/Attribute:status/Value:closed+' => '',
'Class:RoutineChange/Stimulus:ev_validate' => '受け付け',
'Class:RoutineChange/Stimulus:ev_validate+' => '',
'Class:RoutineChange/Stimulus:ev_assign' => '割り当て',
'Class:RoutineChange/Stimulus:ev_assign+' => '',
'Class:RoutineChange/Stimulus:ev_reopen' => '再オープン',
'Class:RoutineChange/Stimulus:ev_reopen+' => '',
'Class:RoutineChange/Stimulus:ev_plan' => '計画',
'Class:RoutineChange/Stimulus:ev_plan+' => '',
'Class:RoutineChange/Stimulus:ev_replan' => '再計画',
'Class:RoutineChange/Stimulus:ev_replan+' => '',
'Class:RoutineChange/Stimulus:ev_implement' => '実施',
'Class:RoutineChange/Stimulus:ev_implement+' => '',
'Class:RoutineChange/Stimulus:ev_monitor' => '経過観察',
'Class:RoutineChange/Stimulus:ev_monitor+' => '',
'Class:RoutineChange/Stimulus:ev_finish' => '終了',
'Class:RoutineChange/Stimulus:ev_finish+' => '',
'Class:RoutineChange/Stimulus:ev_reject' => '否認',
'Class:RoutineChange/Stimulus:ev_approve' => '承認',
'Class:RoutineChange/Stimulus:ev_notapprove' => '承認しない'
));
//
@@ -210,88 +212,88 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:ApprovedChange' => '承認済の変更', # 'Approved Changes',
'Class:ApprovedChange+' => '', # '',
'Class:ApprovedChange/Attribute:approval_date' => '承認日', # 'Approval Date',
'Class:ApprovedChange/Attribute:approval_date+' => '', # '',
'Class:ApprovedChange/Attribute:approval_comment' => '承認時のコメント', # 'Approval comment',
'Class:ApprovedChange/Attribute:approval_comment+' => '', # '',
'Class:ApprovedChange/Stimulus:ev_validate' => '受', # 'Validate',
'Class:ApprovedChange/Stimulus:ev_validate+' => '', # '',
'Class:ApprovedChange/Stimulus:ev_reject' => '却下', # 'Reject',
'Class:ApprovedChange/Stimulus:ev_reject+' => '', # '',
'Class:ApprovedChange/Stimulus:ev_assign' => '担当割当', # 'Assign',
'Class:ApprovedChange/Stimulus:ev_assign+' => '', # '',
'Class:ApprovedChange/Stimulus:ev_reopen' => '再', # 'Reopen',
'Class:ApprovedChange/Stimulus:ev_reopen+' => '', # '',
'Class:ApprovedChange/Stimulus:ev_plan' => '計画', # 'Plan',
'Class:ApprovedChange/Stimulus:ev_plan+' => '', # '',
'Class:ApprovedChange/Stimulus:ev_approve' => '承認', # 'Approve',
'Class:ApprovedChange/Stimulus:ev_approve+' => '', # '',
'Class:ApprovedChange/Stimulus:ev_replan' => '再計画', # 'Replan',
'Class:ApprovedChange/Stimulus:ev_replan+' => '', # '',
'Class:ApprovedChange/Stimulus:ev_notapprove' => '承認の不同意', # 'Reject approval',
'Class:ApprovedChange/Stimulus:ev_notapprove+' => '', # '',
'Class:ApprovedChange/Stimulus:ev_implement' => '実施', # 'Implement',
'Class:ApprovedChange/Stimulus:ev_implement+' => '', # '',
'Class:ApprovedChange/Stimulus:ev_monitor' => '経過観察', # 'Monitor',
'Class:ApprovedChange/Stimulus:ev_monitor+' => '', # '',
'Class:ApprovedChange/Stimulus:ev_finish' => '作業終了', # 'Finish',
'Class:ApprovedChange/Stimulus:ev_finish+' => '', # '',
'Class:ApprovedChange' => '承認済の変更',
'Class:ApprovedChange+' => '',
'Class:ApprovedChange/Attribute:approval_date' => '承認日',
'Class:ApprovedChange/Attribute:approval_date+' => '',
'Class:ApprovedChange/Attribute:approval_comment' => '承認時のコメント',
'Class:ApprovedChange/Attribute:approval_comment+' => '',
'Class:ApprovedChange/Stimulus:ev_validate' => '受け付け',
'Class:ApprovedChange/Stimulus:ev_validate+' => '',
'Class:ApprovedChange/Stimulus:ev_reject' => '却下',
'Class:ApprovedChange/Stimulus:ev_reject+' => '',
'Class:ApprovedChange/Stimulus:ev_assign' => '割り当て',
'Class:ApprovedChange/Stimulus:ev_assign+' => '',
'Class:ApprovedChange/Stimulus:ev_reopen' => '再オープン',
'Class:ApprovedChange/Stimulus:ev_reopen+' => '',
'Class:ApprovedChange/Stimulus:ev_plan' => '計画',
'Class:ApprovedChange/Stimulus:ev_plan+' => '',
'Class:ApprovedChange/Stimulus:ev_approve' => '承認',
'Class:ApprovedChange/Stimulus:ev_approve+' => '',
'Class:ApprovedChange/Stimulus:ev_replan' => '再計画',
'Class:ApprovedChange/Stimulus:ev_replan+' => '',
'Class:ApprovedChange/Stimulus:ev_notapprove' => '承認を拒否',
'Class:ApprovedChange/Stimulus:ev_notapprove+' => '',
'Class:ApprovedChange/Stimulus:ev_implement' => '実施',
'Class:ApprovedChange/Stimulus:ev_implement+' => '',
'Class:ApprovedChange/Stimulus:ev_monitor' => '経過観察',
'Class:ApprovedChange/Stimulus:ev_monitor+' => '',
'Class:ApprovedChange/Stimulus:ev_finish' => '終了',
'Class:ApprovedChange/Stimulus:ev_finish+' => '',
));
//
// Class: NormalChange
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:NormalChange' => '通常変更', # 'Normal Change',
'Class:NormalChange+' => '', # '',
'Class:NormalChange/Attribute:status/Value:new' => '新規', # 'New',
'Class:NormalChange/Attribute:status/Value:new+' => '', # '',
'Class:NormalChange/Attribute:status/Value:validated' => '受付済', # 'Validated',
'Class:NormalChange/Attribute:status/Value:validated+' => '', # '',
'Class:NormalChange/Attribute:status/Value:rejected' => '却下済', # 'Rejected',
'Class:NormalChange/Attribute:status/Value:rejected+' => '', # '',
'Class:NormalChange/Attribute:status/Value:assigned' => '割当済', # 'Assigned',
'Class:NormalChange/Attribute:status/Value:assigned+' => '', # '',
'Class:NormalChange/Attribute:status/Value:plannedscheduled' => '計画・予定された', # 'Planned and scheduled',
'Class:NormalChange/Attribute:status/Value:plannedscheduled+' => '', # '',
'Class:NormalChange/Attribute:status/Value:approved' => '承認済', # 'Approved',
'Class:NormalChange/Attribute:status/Value:approved+' => '', # '',
'Class:NormalChange/Attribute:status/Value:notapproved' => '未承認', # 'Not approved',
'Class:NormalChange' => '通常変更',
'Class:NormalChange+' => '',
'Class:NormalChange/Attribute:status/Value:new' => '新規',
'Class:NormalChange/Attribute:status/Value:new+' => '',
'Class:NormalChange/Attribute:status/Value:validated' => '受け付け済み',
'Class:NormalChange/Attribute:status/Value:validated+' => '',
'Class:NormalChange/Attribute:status/Value:rejected' => '却下済',
'Class:NormalChange/Attribute:status/Value:rejected+' => '',
'Class:NormalChange/Attribute:status/Value:assigned' => '割り当て済み',
'Class:NormalChange/Attribute:status/Value:assigned+' => '',
'Class:NormalChange/Attribute:status/Value:plannedscheduled' => '計画・予定された',
'Class:NormalChange/Attribute:status/Value:plannedscheduled+' => '',
'Class:NormalChange/Attribute:status/Value:approved' => '承認済',
'Class:NormalChange/Attribute:status/Value:approved+' => '',
'Class:NormalChange/Attribute:status/Value:notapproved' => '未承認',
'Class:NormalChange/Attribute:status/Value:notapproved+' => '', # '',
'Class:NormalChange/Attribute:status/Value:implemented' => '実施済', # 'Implemented',
'Class:NormalChange/Attribute:status/Value:implemented+' => '', # '',
'Class:NormalChange/Attribute:status/Value:monitored' => '経過観察中', # 'Monitored',
'Class:NormalChange/Attribute:status/Value:monitored+' => '', # '',
'Class:NormalChange/Attribute:status/Value:closed' => '完了', # 'Closed',
'Class:NormalChange/Attribute:status/Value:closed+' => '', # '',
'Class:NormalChange/Attribute:acceptance_date' => '受理日', # 'Acceptance date',
'Class:NormalChange/Attribute:acceptance_date+' => '', # '',
'Class:NormalChange/Attribute:acceptance_comment' => '受理コメント', # 'Acceptance comment',
'Class:NormalChange/Attribute:acceptance_comment+' => '', # '',
'Class:NormalChange/Stimulus:ev_validate' => '受', # 'Validate',
'Class:NormalChange/Stimulus:ev_validate+' => '', # '',
'Class:NormalChange/Stimulus:ev_reject' => '却下', # 'Reject',
'Class:NormalChange/Stimulus:ev_reject+' => '', # '',
'Class:NormalChange/Stimulus:ev_assign' => '担当割当', # 'Assign',
'Class:NormalChange/Stimulus:ev_assign+' => '', # '',
'Class:NormalChange/Stimulus:ev_reopen' => '再', # 'Reopen',
'Class:NormalChange/Stimulus:ev_reopen+' => '', # '',
'Class:NormalChange/Stimulus:ev_plan' => '計画', # 'Plan',
'Class:NormalChange/Stimulus:ev_plan+' => '', # '',
'Class:NormalChange/Stimulus:ev_approve' => '承認', # 'Approve',
'Class:NormalChange/Stimulus:ev_approve+' => '', # '',
'Class:NormalChange/Stimulus:ev_replan' => '再計画', # 'Replan',
'Class:NormalChange/Stimulus:ev_replan+' => '', # '',
'Class:NormalChange/Stimulus:ev_notapprove' => '承認の不同意', # 'Reject approval',
'Class:NormalChange/Stimulus:ev_notapprove+' => '', # '',
'Class:NormalChange/Stimulus:ev_implement' => '実施', # 'Implement',
'Class:NormalChange/Stimulus:ev_implement+' => '', # '',
'Class:NormalChange/Stimulus:ev_monitor' => '経過観察', # 'Monitor',
'Class:NormalChange/Stimulus:ev_monitor+' => '', # '',
'Class:NormalChange/Stimulus:ev_finish' => '作業終了', # 'Finish',
'Class:NormalChange/Stimulus:ev_finish+' => '', # '',
'Class:NormalChange/Attribute:status/Value:implemented' => '実施済',
'Class:NormalChange/Attribute:status/Value:implemented+' => '',
'Class:NormalChange/Attribute:status/Value:monitored' => '経過観察中',
'Class:NormalChange/Attribute:status/Value:monitored+' => '',
'Class:NormalChange/Attribute:status/Value:closed' => 'クローズ',
'Class:NormalChange/Attribute:status/Value:closed+' => '',
'Class:NormalChange/Attribute:acceptance_date' => '受理日',
'Class:NormalChange/Attribute:acceptance_date+' => '',
'Class:NormalChange/Attribute:acceptance_comment' => '受理コメント',
'Class:NormalChange/Attribute:acceptance_comment+' => '',
'Class:NormalChange/Stimulus:ev_validate' => '受け付け',
'Class:NormalChange/Stimulus:ev_validate+' => '',
'Class:NormalChange/Stimulus:ev_reject' => '却下',
'Class:NormalChange/Stimulus:ev_reject+' => '',
'Class:NormalChange/Stimulus:ev_assign' => '割り当て',
'Class:NormalChange/Stimulus:ev_assign+' => '',
'Class:NormalChange/Stimulus:ev_reopen' => '再オープン',
'Class:NormalChange/Stimulus:ev_reopen+' => '',
'Class:NormalChange/Stimulus:ev_plan' => '計画',
'Class:NormalChange/Stimulus:ev_plan+' => '',
'Class:NormalChange/Stimulus:ev_approve' => '承認',
'Class:NormalChange/Stimulus:ev_approve+' => '',
'Class:NormalChange/Stimulus:ev_replan' => '再計画',
'Class:NormalChange/Stimulus:ev_replan+' => '',
'Class:NormalChange/Stimulus:ev_notapprove' => '承認を拒否',
'Class:NormalChange/Stimulus:ev_notapprove+' => '',
'Class:NormalChange/Stimulus:ev_implement' => '実施',
'Class:NormalChange/Stimulus:ev_implement+' => '',
'Class:NormalChange/Stimulus:ev_monitor' => '経過観察',
'Class:NormalChange/Stimulus:ev_monitor+' => '',
'Class:NormalChange/Stimulus:ev_finish' => '終了',
'Class:NormalChange/Stimulus:ev_finish+' => '',
));
//
@@ -299,50 +301,50 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:EmergencyChange' => '緊急変更', # 'Emergency Change',
'Class:EmergencyChange+' => '', # '',
'Class:EmergencyChange/Attribute:status/Value:new' => '新規', # 'New',
'Class:EmergencyChange/Attribute:status/Value:new+' => '', # '',
'Class:EmergencyChange/Attribute:status/Value:validated' => '受付済', # 'Validated',
'Class:EmergencyChange/Attribute:status/Value:validated+' => '', # '',
'Class:EmergencyChange/Attribute:status/Value:rejected' => '却下', # 'Rejected',
'Class:EmergencyChange/Attribute:status/Value:rejected+' => '', # '',
'Class:EmergencyChange/Attribute:status/Value:assigned' => '割当済', # 'Assigned',
'Class:EmergencyChange/Attribute:status/Value:assigned+' => '', # '',
'Class:EmergencyChange/Attribute:status/Value:plannedscheduled' => '計画・予定された', # 'Planned and scheduled',
'Class:EmergencyChange/Attribute:status/Value:plannedscheduled+' => '', # '',
'Class:EmergencyChange/Attribute:status/Value:approved' => '承認済み', # 'Approved',
'Class:EmergencyChange/Attribute:status/Value:approved+' => '', # '',
'Class:EmergencyChange/Attribute:status/Value:notapproved' => '未承認', # 'Not approved',
'Class:EmergencyChange/Attribute:status/Value:notapproved+' => '', # '',
'Class:EmergencyChange/Attribute:status/Value:implemented' => '実施済', # 'Implemented',
'Class:EmergencyChange/Attribute:status/Value:implemented+' => '', # '',
'Class:EmergencyChange/Attribute:status/Value:monitored' => '経過観察中', # 'Monitored',
'Class:EmergencyChange/Attribute:status/Value:monitored+' => '', # '',
'Class:EmergencyChange/Attribute:status/Value:closed' => '完了', # 'Closed',
'Class:EmergencyChange/Attribute:status/Value:closed+' => '', # '',
'Class:EmergencyChange/Stimulus:ev_validate' => '受', # 'Validate',
'Class:EmergencyChange/Stimulus:ev_validate+' => '', # '',
'Class:EmergencyChange/Stimulus:ev_reject' => '却下', # 'Reject',
'Class:EmergencyChange/Stimulus:ev_reject+' => '', # '',
'Class:EmergencyChange/Stimulus:ev_assign' => '担当割当', # 'Assign',
'Class:EmergencyChange/Stimulus:ev_assign+' => '', # '',
'Class:EmergencyChange/Stimulus:ev_reopen' => '再', # 'Reopen',
'Class:EmergencyChange/Stimulus:ev_reopen+' => '', # '',
'Class:EmergencyChange/Stimulus:ev_plan' => '計画', # 'Plan',
'Class:EmergencyChange/Stimulus:ev_plan+' => '', # '',
'Class:EmergencyChange/Stimulus:ev_approve' => '承認', # 'Approve',
'Class:EmergencyChange/Stimulus:ev_approve+' => '', # '',
'Class:EmergencyChange/Stimulus:ev_replan' => '再計画', # 'Replan',
'Class:EmergencyChange/Stimulus:ev_replan+' => '', # '',
'Class:EmergencyChange/Stimulus:ev_notapprove' => '承認の不同意', # 'Reject approval',
'Class:EmergencyChange/Stimulus:ev_notapprove+' => '', # '',
'Class:EmergencyChange/Stimulus:ev_implement' => '実施', # 'Implement',
'Class:EmergencyChange/Stimulus:ev_implement+' => '', # '',
'Class:EmergencyChange/Stimulus:ev_monitor' => '経過観察', # 'Monitor',
'Class:EmergencyChange/Stimulus:ev_monitor+' => '', # '',
'Class:EmergencyChange/Stimulus:ev_finish' => '作業終了', # 'Finish',
'Class:EmergencyChange/Stimulus:ev_finish+' => '', # '',
'Class:EmergencyChange' => '緊急変更',
'Class:EmergencyChange+' => '',
'Class:EmergencyChange/Attribute:status/Value:new' => '新規',
'Class:EmergencyChange/Attribute:status/Value:new+' => '',
'Class:EmergencyChange/Attribute:status/Value:validated' => '受け付け済み',
'Class:EmergencyChange/Attribute:status/Value:validated+' => '',
'Class:EmergencyChange/Attribute:status/Value:rejected' => '却下済み',
'Class:EmergencyChange/Attribute:status/Value:rejected+' => '',
'Class:EmergencyChange/Attribute:status/Value:assigned' => '割り当て済み',
'Class:EmergencyChange/Attribute:status/Value:assigned+' => '',
'Class:EmergencyChange/Attribute:status/Value:plannedscheduled' => '計画・予定された',
'Class:EmergencyChange/Attribute:status/Value:plannedscheduled+' => '',
'Class:EmergencyChange/Attribute:status/Value:approved' => '承認済み',
'Class:EmergencyChange/Attribute:status/Value:approved+' => '',
'Class:EmergencyChange/Attribute:status/Value:notapproved' => '未承認',
'Class:EmergencyChange/Attribute:status/Value:notapproved+' => '',
'Class:EmergencyChange/Attribute:status/Value:implemented' => '実施済',
'Class:EmergencyChange/Attribute:status/Value:implemented+' => '',
'Class:EmergencyChange/Attribute:status/Value:monitored' => '経過観察中',
'Class:EmergencyChange/Attribute:status/Value:monitored+' => '',
'Class:EmergencyChange/Attribute:status/Value:closed' => 'クローズ',
'Class:EmergencyChange/Attribute:status/Value:closed+' => '',
'Class:EmergencyChange/Stimulus:ev_validate' => '受け付け',
'Class:EmergencyChange/Stimulus:ev_validate+' => '',
'Class:EmergencyChange/Stimulus:ev_reject' => '却下',
'Class:EmergencyChange/Stimulus:ev_reject+' => '',
'Class:EmergencyChange/Stimulus:ev_assign' => '割り当て',
'Class:EmergencyChange/Stimulus:ev_assign+' => '',
'Class:EmergencyChange/Stimulus:ev_reopen' => '再オープン',
'Class:EmergencyChange/Stimulus:ev_reopen+' => '',
'Class:EmergencyChange/Stimulus:ev_plan' => '計画',
'Class:EmergencyChange/Stimulus:ev_plan+' => '',
'Class:EmergencyChange/Stimulus:ev_approve' => '承認',
'Class:EmergencyChange/Stimulus:ev_approve+' => '',
'Class:EmergencyChange/Stimulus:ev_replan' => '再計画',
'Class:EmergencyChange/Stimulus:ev_replan+' => '',
'Class:EmergencyChange/Stimulus:ev_notapprove' => '承認を拒否',
'Class:EmergencyChange/Stimulus:ev_notapprove+' => '',
'Class:EmergencyChange/Stimulus:ev_implement' => '実施',
'Class:EmergencyChange/Stimulus:ev_implement+' => '',
'Class:EmergencyChange/Stimulus:ev_monitor' => '経過観察',
'Class:EmergencyChange/Stimulus:ev_monitor+' => '',
'Class:EmergencyChange/Stimulus:ev_finish' => '終了',
'Class:EmergencyChange/Stimulus:ev_finish+' => '',
));
?>
?>

File diff suppressed because it is too large Load Diff

View File

@@ -53,5 +53,4 @@ SetupWebPage::AddModule(
),
)
);
?>

View File

@@ -24,24 +24,27 @@
*/
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Menu:IncidentManagement' => 'インシデント管理', # 'Incident Management'
'Menu:IncidentManagement+' => 'インシデント管理', # 'Incident Management'
'Menu:Incident:Overview' => '概要', # 'Overview'
'Menu:Incident:Overview+' => '概要', # 'Overview'
'Menu:NewIncident' => '新規インシデント', # 'New Incident'
'Menu:NewIncident+' => 'インシデントチケット作成', # 'Create a new Incident ticket'
'Menu:SearchIncidents' => 'インシデント検索', # 'Search for Incidents'
'Menu:SearchIncidents+' => 'インシデントチケット検索', # 'Search for Incident tickets'
'Menu:Incident:Shortcuts' => 'ショートカット', # 'Shortcuts'
'Menu:Incident:Shortcuts+' => '', # ''
'Menu:Incident:MyIncidents' => '担当しているインシデント', # 'Incidents assigned to me'
'Menu:Incident:MyIncidents+' => '担当しているインシデント(エージェント)', # 'Incidents assigned to me (as Agent)'
'Menu:Incident:EscalatedIncidents' => 'エスカレーションされたインシデント', # 'Escalated Incidents'
'Menu:Incident:EscalatedIncidents+' => 'エスカレーションされたインシデント', # 'Escalated Incidents'
'Menu:Incident:OpenIncidents' => '担当のいないインシデント', # 'All Open Incidents'
'Menu:Incident:OpenIncidents+' => '担当のいないインシデント', # 'All Open Incidents'
'Menu:IncidentManagement' => 'インシデント管理',
'Menu:IncidentManagement+' => 'インシデント管理',
'Menu:Incident:Overview' => '概要',
'Menu:Incident:Overview+' => '概要',
'Menu:NewIncident' => '新規インシデント',
'Menu:NewIncident+' => 'インシデントチケット作成',
'Menu:SearchIncidents' => 'インシデント検索',
'Menu:SearchIncidents+' => 'インシデントチケット検索',
'Menu:Incident:Shortcuts' => 'ショートカット',
'Menu:Incident:Shortcuts+' => '', # ''
'Menu:Incident:MyIncidents' => '担当しているインシデント',
'Menu:Incident:MyIncidents+' => '担当しているインシデント(エージェント)',
'Menu:Incident:EscalatedIncidents' => 'エスカレーションされたインシデント',
'Menu:Incident:EscalatedIncidents+' => 'エスカレーションされたインシデント',
'Menu:Incident:OpenIncidents' => '全オープンインシデント',
'Menu:Incident:OpenIncidents+' => '全オープンインシデント',
));
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -57,18 +60,22 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:Incident' => 'インシデント', # 'Incident'
'Class:Incident+' => '', # ''
'Class:Incident/Stimulus:ev_assign' => '割', # 'Assign'
'Class:Incident/Stimulus:ev_assign+' => '', # ''
'Class:Incident/Stimulus:ev_reassign' => '再割', # 'Reassign'
'Class:Incident/Stimulus:ev_reassign+' => '', # ''
'Class:Incident/Stimulus:ev_timeout' => '中断(エスカレーション)', # 'ev_timeout'
'Class:Incident/Stimulus:ev_timeout+' => '', # ''
'Class:Incident/Stimulus:ev_resolve' => '解決済みとする', # 'Mark as resolved'
'Class:Incident/Stimulus:ev_resolve+' => '', # ''
'Class:Incident/Stimulus:ev_close' => '完了', # 'Close'
'Class:Incident/Stimulus:ev_close+' => '', # ''
'Class:Incident' => 'インシデント',
'Class:Incident+' => '',
'Class:Incident/Stimulus:ev_assign' => '割り当て',
'Class:Incident/Stimulus:ev_assign+' => '',
'Class:Incident/Stimulus:ev_reassign' => '再割り当て',
'Class:Incident/Stimulus:ev_reassign+' => '',
'Class:Incident/Stimulus:ev_timeout' => 'EV_タイムアウト',
'Class:Incident/Stimulus:ev_timeout+' => '',
'Class:Incident/Stimulus:ev_resolve' => '解決',
'Class:Incident/Stimulus:ev_resolve+' => '',
'Class:Incident/Stimulus:ev_close' => 'クローズ',
'Class:Incident/Stimulus:ev_close+' => '',
'Class:lnkTicketToIncident' => 'インシデントへのチケット',
'Class:lnkTicketToIncident/Attribute:ticket_id' => 'チケット',
'Class:lnkTicketToIncident/Attribute:incident_id' => 'インシデント',
'Class:lnkTicketToIncident/Attribute:reason' => '理由',
));
?>

View File

@@ -52,27 +52,27 @@
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Menu:ProblemManagement' => 'プロブレム管理', // 'Problem Management', # 'Problem Management'
'Menu:ProblemManagement+' => 'プロブレム管理', // 'Problem Management', # 'Problem Management'
'Menu:Problem:Overview' => '概要', # 'Overview'
'Menu:Problem:Overview+' => '概要', # 'Overview'
'Menu:NewProblem' => '新規プロブレム', // 'New Problem', # 'New Problem'
'Menu:NewProblem+' => '新規プロブレム', // 'New Problem', # 'New Problem'
'Menu:SearchProblems' => 'プロブレムを検索', // 'Search for Problems', # 'Search for Problems'
'Menu:SearchProblems+' => 'プロブレムを検索', // 'Search for Problems', # 'Search for Problems'
'Menu:Problem:Shortcuts' => 'ショートカット', # 'Shortcuts'
'Menu:Problem:MyProblems' => 'マイプロブレム', // 'My Problems', # 'My Problems'
'Menu:Problem:MyProblems+' => 'マイプロブレム', // 'My Problems', # 'My Problems'
'Menu:Problem:OpenProblems' => '担当のいない problems', # 'All Open problems'
'Menu:Problem:OpenProblems+' => '担当のいない problems', # 'All Open problems'
'UI-ProblemManagementOverview-ProblemByService' => 'サービス別プロブレム', // 'Problems by Service', # 'Problems by Service'
'UI-ProblemManagementOverview-ProblemByService+' => 'サービス別プロブレム', // 'Problems by Service', # 'Problems by Service'
'UI-ProblemManagementOverview-ProblemByPriority' => 'プライオリティ別プロブレム', // 'Problems by Priority', # 'Problems by Priority'
'UI-ProblemManagementOverview-ProblemByPriority+' => 'プライオリティ別プロブレム', // 'Problems by Priority', # 'Problems by Priority'
'UI-ProblemManagementOverview-ProblemUnassigned' => '未アサインプロブレム', // 'Unassigned Problems', # 'Unassigned Problems'
'UI-ProblemManagementOverview-ProblemUnassigned+' => '未アサインプロブレム', // 'Unassigned Problems', # 'Unassigned Problems'
'UI:ProblemMgmtMenuOverview:Title' => 'プロブレム管理ダッシュボード', // 'Dashboard for Problem Management', # 'Dashboard for Problem Management'
'UI:ProblemMgmtMenuOverview:Title+' => 'プロブレム管理ダッシュボード', // 'Dashboard for Problem Management', # 'Dashboard for Problem Management'
'Menu:ProblemManagement' => '問題管理',
'Menu:ProblemManagement+' => '問題管理',
'Menu:Problem:Overview' => '概要',
'Menu:Problem:Overview+' => '概要',
'Menu:NewProblem' => '新規登録',
'Menu:NewProblem+' => '新規登録',
'Menu:SearchProblems' => '検索',
'Menu:SearchProblems+' => '検索',
'Menu:Problem:Shortcuts' => 'ショートカット',
'Menu:Problem:MyProblems' => '私の担当問題',
'Menu:Problem:MyProblems+' => '私の担当問題',
'Menu:Problem:OpenProblems' => 'オープンな問題',
'Menu:Problem:OpenProblems+' => 'オープンな問題',
'UI-ProblemManagementOverview-ProblemByService' => 'サービス別問題',
'UI-ProblemManagementOverview-ProblemByService+' => 'サービス別問題',
'UI-ProblemManagementOverview-ProblemByPriority' => '優先度別問題',
'UI-ProblemManagementOverview-ProblemByPriority+' => '優先度別問題',
'UI-ProblemManagementOverview-ProblemUnassigned' => '未割当問題',
'UI-ProblemManagementOverview-ProblemUnassigned+' => '未割当問題',
'UI:ProblemMgmtMenuOverview:Title' => '問題管理ダッシュボード',
'UI:ProblemMgmtMenuOverview:Title+' => '問題管理ダッシュボード',
));
//
@@ -80,88 +80,88 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:Problem' => 'プロブレム', // 'Problem', # 'Problem'
'Class:Problem+' => '', # ''
'Class:Problem/Attribute:status' => 'ステータス', // 'Status', # 'Status'
'Class:Problem/Attribute:status+' => '', # ''
'Class:Problem/Attribute:status/Value:new' => '新規', # 'New'
'Class:Problem/Attribute:status/Value:new+' => '', # ''
'Class:Problem/Attribute:status/Value:assigned' => '割当済', # 'Assigned'
'Class:Problem/Attribute:status/Value:assigned+' => '', # ''
'Class:Problem/Attribute:status/Value:resolved' => '解決済み', // 'Resolved', # 'Resolved'
'Class:Problem/Attribute:status/Value:resolved+' => '', # ''
'Class:Problem/Attribute:status/Value:closed' => '完了', # 'Closed'
'Class:Problem/Attribute:status/Value:closed+' => '', # ''
'Class:Problem/Attribute:org_id' => 'カスタマー', // 'Customer', # 'Customer'
'Class:Problem/Attribute:org_id+' => '', # ''
'Class:Problem/Attribute:org_name' => '名前', // 'Name', # 'Name'
'Class:Problem/Attribute:org_name+' => '共通名', // 'Common name', # 'Common name'
'Class:Problem/Attribute:service_id' => 'サービス', // 'Service', # 'Service'
'Class:Problem/Attribute:service_id+' => '', # ''
'Class:Problem/Attribute:service_name' => '名前', // 'Name', # 'Name'
'Class:Problem/Attribute:service_name+' => '', # ''
'Class:Problem/Attribute:servicesubcategory_id' => 'サービスカテゴリ', // 'Service Category', # 'Service Category'
'Class:Problem/Attribute:servicesubcategory_id+' => '', # ''
'Class:Problem/Attribute:servicesubcategory_name' => '名前', // 'Name', # 'Name'
'Class:Problem/Attribute:servicesubcategory_name+' => '', # ''
'Class:Problem/Attribute:product' => 'プロダクト', // 'Product', # 'Product'
'Class:Problem/Attribute:product+' => '', # ''
'Class:Problem/Attribute:impact' => '影響', // 'Impact', # 'Impact'
'Class:Problem/Attribute:impact+' => '', # ''
'Class:Problem/Attribute:impact/Value:1' => 'パーソン', // 'A Person', # 'A Person'
'Class:Problem/Attribute:impact/Value:1+' => '', # ''
'Class:Problem/Attribute:impact/Value:2' => 'サービス', // 'A Service', # 'A Service'
'Class:Problem/Attribute:impact/Value:2+' => '', # ''
'Class:Problem/Attribute:impact/Value:3' => '部署', // 'A Department', # 'A Department'
'Class:Problem/Attribute:impact/Value:3+' => '', # ''
'Class:Problem/Attribute:urgency' => '緊急', // 'Urgency', # 'Urgency'
'Class:Problem/Attribute:urgency+' => '', # ''
'Class:Problem/Attribute:urgency/Value:1' => '低', // 'Low', # 'Low'
'Class:Problem/Attribute:urgency/Value:1+' => '低', // 'Low', # 'Low'
'Class:Problem/Attribute:urgency/Value:2' => '中', // 'Medium', # 'Medium'
'Class:Problem/Attribute:urgency/Value:2+' => '中', // 'Medium', # 'Medium'
'Class:Problem/Attribute:urgency/Value:3' => '高', // 'High', # 'High'
'Class:Problem/Attribute:urgency/Value:3+' => '高', // 'High', # 'High'
'Class:Problem/Attribute:priority' => 'プライオリティ', // 'Priority', # 'Priority'
'Class:Problem/Attribute:priority+' => '', # ''
'Class:Problem/Attribute:priority/Value:1' => '低', // 'Low', # 'Low'
'Class:Problem/Attribute:priority/Value:1+' => '', # ''
'Class:Problem/Attribute:priority/Value:2' => '中', // 'Medium', # 'Medium'
'Class:Problem/Attribute:priority/Value:2+' => '', # ''
'Class:Problem/Attribute:priority/Value:3' => '高', // 'High', # 'High'
'Class:Problem/Attribute:priority/Value:3+' => '', # ''
'Class:Problem/Attribute:workgroup_id' => 'ワークグループ', // 'WorkGroup', # 'WorkGroup'
'Class:Problem/Attribute:workgroup_id+' => '', # ''
'Class:Problem/Attribute:workgroup_name' => '名前', // 'Name', # 'Name'
'Class:Problem/Attribute:workgroup_name+' => '', # ''
'Class:Problem/Attribute:agent_id' => 'エージェント', // 'Agent', # 'Agent'
'Class:Problem/Attribute:agent_id+' => '', # ''
'Class:Problem/Attribute:agent_name' => 'エージェント名', // 'Agent Name', # 'Agent Name'
'Class:Problem/Attribute:agent_name+' => '', # ''
'Class:Problem/Attribute:agent_email' => 'エージェントEメール', // 'Agent Email', # 'Agent Email'
'Class:Problem/Attribute:agent_email+' => '', # ''
'Class:Problem/Attribute:related_change_id' => '関連する変更', // 'Related Change', # 'Related Change'
'Class:Problem/Attribute:related_change_id+' => '', # ''
'Class:Problem/Attribute:related_change_ref' => '参照', // 'Ref', # 'Ref'
'Class:Problem/Attribute:related_change_ref+' => '', # ''
'Class:Problem/Attribute:close_date' => 'クローズ日', // 'Close Date', # 'Close Date'
'Class:Problem/Attribute:close_date+' => '', # ''
'Class:Problem/Attribute:last_update' => '最終更新日', // 'Last Update', # 'Last Update'
'Class:Problem/Attribute:last_update+' => '', # ''
'Class:Problem/Attribute:assignment_date' => 'アサイン日付', // 'Assignment Date', # 'Assignment Date'
'Class:Problem/Attribute:assignment_date+' => '', # ''
'Class:Problem/Attribute:resolution_date' => '解決日', // 'Resolution Date', # 'Resolution Date'
'Class:Problem/Attribute:resolution_date+' => '', # ''
'Class:Problem/Attribute:knownerrors_list' => '既知のエラー', // 'Known Errors', # 'Known Errors'
'Class:Problem/Attribute:knownerrors_list+' => '', # ''
'Class:Problem/Stimulus:ev_assign' => '割', # 'Assign'
'Class:Problem/Stimulus:ev_assign+' => '', # ''
'Class:Problem/Stimulus:ev_reassign' => '再割', // 'Reaassign', # 'Reaassign'
'Class:Problem/Stimulus:ev_reassign+' => '', # ''
'Class:Problem/Stimulus:ev_resolve' => '解決', // 'Resolve', # 'Resolve'
'Class:Problem/Stimulus:ev_resolve+' => '', # ''
'Class:Problem/Stimulus:ev_close' => '完了', # 'Close'
'Class:Problem/Stimulus:ev_close+' => '', # ''
'Class:Problem' => '問題',
'Class:Problem+' => '',
'Class:Problem/Attribute:status' => '状態',
'Class:Problem/Attribute:status+' => '',
'Class:Problem/Attribute:status/Value:new' => '新規',
'Class:Problem/Attribute:status/Value:new+' => '',
'Class:Problem/Attribute:status/Value:assigned' => '割当済',
'Class:Problem/Attribute:status/Value:assigned+' => '',
'Class:Problem/Attribute:status/Value:resolved' => '解決済み',
'Class:Problem/Attribute:status/Value:resolved+' => '',
'Class:Problem/Attribute:status/Value:closed' => 'クローズ',
'Class:Problem/Attribute:status/Value:closed+' => '',
'Class:Problem/Attribute:org_id' => '顧客',
'Class:Problem/Attribute:org_id+' => '',
'Class:Problem/Attribute:org_name' => '名前',
'Class:Problem/Attribute:org_name+' => '共通名',
'Class:Problem/Attribute:service_id' => 'サービス',
'Class:Problem/Attribute:service_id+' => '',
'Class:Problem/Attribute:service_name' => '名前',
'Class:Problem/Attribute:service_name+' => '',
'Class:Problem/Attribute:servicesubcategory_id' => 'サービスカテゴリ',
'Class:Problem/Attribute:servicesubcategory_id+' => '',
'Class:Problem/Attribute:servicesubcategory_name' => '名前',
'Class:Problem/Attribute:servicesubcategory_name+' => '',
'Class:Problem/Attribute:product' => '製品',
'Class:Problem/Attribute:product+' => '',
'Class:Problem/Attribute:impact' => 'インパクト',
'Class:Problem/Attribute:impact+' => '',
'Class:Problem/Attribute:impact/Value:1' => '',
'Class:Problem/Attribute:impact/Value:1+' => '',
'Class:Problem/Attribute:impact/Value:2' => 'サービス',
'Class:Problem/Attribute:impact/Value:2+' => '',
'Class:Problem/Attribute:impact/Value:3' => '部署',
'Class:Problem/Attribute:impact/Value:3+' => '',
'Class:Problem/Attribute:urgency' => '緊急',
'Class:Problem/Attribute:urgency+' => '',
'Class:Problem/Attribute:urgency/Value:1' => '低',
'Class:Problem/Attribute:urgency/Value:1+' => '低',
'Class:Problem/Attribute:urgency/Value:2' => '中',
'Class:Problem/Attribute:urgency/Value:2+' => '中',
'Class:Problem/Attribute:urgency/Value:3' => '高',
'Class:Problem/Attribute:urgency/Value:3+' => '高',
'Class:Problem/Attribute:priority' => '優先度',
'Class:Problem/Attribute:priority+' => '',
'Class:Problem/Attribute:priority/Value:1' => '低',
'Class:Problem/Attribute:priority/Value:1+' => '',
'Class:Problem/Attribute:priority/Value:2' => '中',
'Class:Problem/Attribute:priority/Value:2+' => '',
'Class:Problem/Attribute:priority/Value:3' => '高',
'Class:Problem/Attribute:priority/Value:3+' => '',
'Class:Problem/Attribute:workgroup_id' => 'ワークグループ',
'Class:Problem/Attribute:workgroup_id+' => '',
'Class:Problem/Attribute:workgroup_name' => '名前',
'Class:Problem/Attribute:workgroup_name+' => '',
'Class:Problem/Attribute:agent_id' => 'エージェント',
'Class:Problem/Attribute:agent_id+' => '',
'Class:Problem/Attribute:agent_name' => 'エージェント名',
'Class:Problem/Attribute:agent_name+' => '',
'Class:Problem/Attribute:agent_email' => 'エージェントEメール',
'Class:Problem/Attribute:agent_email+' => '',
'Class:Problem/Attribute:related_change_id' => '関連する変更',
'Class:Problem/Attribute:related_change_id+' => '',
'Class:Problem/Attribute:related_change_ref' => '参照',
'Class:Problem/Attribute:related_change_ref+' => '',
'Class:Problem/Attribute:close_date' => 'クローズ日',
'Class:Problem/Attribute:close_date+' => '',
'Class:Problem/Attribute:last_update' => '最終更新日',
'Class:Problem/Attribute:last_update+' => '',
'Class:Problem/Attribute:assignment_date' => '割り当て日',
'Class:Problem/Attribute:assignment_date+' => '',
'Class:Problem/Attribute:resolution_date' => '解決日',
'Class:Problem/Attribute:resolution_date+' => '',
'Class:Problem/Attribute:knownerrors_list' => '既知のエラー',
'Class:Problem/Attribute:knownerrors_list+' => '',
'Class:Problem/Stimulus:ev_assign' => '割り当て',
'Class:Problem/Stimulus:ev_assign+' => '',
'Class:Problem/Stimulus:ev_reassign' => '再割り当て',
'Class:Problem/Stimulus:ev_reassign+' => '',
'Class:Problem/Stimulus:ev_resolve' => '解決',
'Class:Problem/Stimulus:ev_resolve+' => '',
'Class:Problem/Stimulus:ev_close' => 'クローズ',
'Class:Problem/Stimulus:ev_close+' => '',
));
?>

View File

@@ -24,22 +24,22 @@
*/
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Menu:RequestManagement' => 'ヘルプデスク', # 'Helpdesk'
'Menu:RequestManagement+' => 'ヘルプデスク', # 'Helpdesk'
'Menu:UserRequest:Overview' => '概要', # 'Overview'
'Menu:UserRequest:Overview+' => '概要', # 'Overview'
'Menu:NewUserRequest' => '新規リクエスト', # 'New User Request'
'Menu:NewUserRequest+' => 'リクエストチケットを作成', # 'Create a new User Request ticket'
'Menu:SearchUserRequests' => 'リクエストを検索', # 'Search for User Requests'
'Menu:SearchUserRequests+' => 'リクエストチケットを検索', # 'Search for User Request tickets'
'Menu:UserRequest:Shortcuts' => 'ショートカット', # 'Shortcuts'
'Menu:UserRequest:Shortcuts+' => '', # ''
'Menu:UserRequest:MyRequests' => '担当しているリクエスト', # 'Requests assigned to me'
'Menu:UserRequest:MyRequests+' => '担当しているリクエスト(エージェント)', # 'Requests assigned to me (as Agent)'
'Menu:UserRequest:EscalatedRequests' => 'エスカレーションされた Requests', # 'Escalated Requests'
'Menu:UserRequest:EscalatedRequests+' => 'エスカレーションされた Requests', # 'Escalated Requests'
'Menu:UserRequest:OpenRequests' => '担当のいないリクエスト', # 'All Open Requests'
'Menu:UserRequest:OpenRequests+' => '担当のいないリクエスト', # 'All Open Requests'
'Menu:RequestManagement' => 'ヘルプデスク',
'Menu:RequestManagement+' => 'ヘルプデスク',
'Menu:UserRequest:Overview' => '概要',
'Menu:UserRequest:Overview+' => '概要',
'Menu:NewUserRequest' => '新規要求',
'Menu:NewUserRequest+' => '要求チケットを作成',
'Menu:SearchUserRequests' => '要求を検索',
'Menu:SearchUserRequests+' => '要求チケットを検索',
'Menu:UserRequest:Shortcuts' => 'ショートカット',
'Menu:UserRequest:Shortcuts+' => '',
'Menu:UserRequest:MyRequests' => '担当の要求',
'Menu:UserRequest:MyRequests+' => '担当の要求(エージェント)',
'Menu:UserRequest:EscalatedRequests' => 'エスカレーションされた要求',
'Menu:UserRequest:EscalatedRequests+' => 'エスカレーションされた要求',
'Menu:UserRequest:OpenRequests' => 'オープン中の要求',
'Menu:UserRequest:OpenRequests+' => 'オープン中の要求',
));
// Dictionnay conventions
@@ -57,30 +57,30 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:UserRequest' => 'ユーザーリクエスト', # 'User Request'
'Class:UserRequest+' => '', # ''
'Class:UserRequest/Attribute:request_type' => 'リクエストの種別', # 'Request Type'
'Class:UserRequest/Attribute:request_type+' => '', # ''
'Class:UserRequest/Attribute:request_type/Value:information' => '情報', # 'Information'
'Class:UserRequest/Attribute:request_type/Value:information+' => '情報', # 'Information'
'Class:UserRequest/Attribute:request_type/Value:issue' => '問題点', # 'Issue'
'Class:UserRequest/Attribute:request_type/Value:issue+' => '問題点', # 'Issue'
'Class:UserRequest/Attribute:request_type/Value:service request' => 'サービスの依頼', # 'Service Request'
'Class:UserRequest/Attribute:request_type/Value:service request+' => 'サービスの依頼', # 'Service Request'
'Class:UserRequest/Attribute:freeze_reason' => '保留の理由', # 'Pending reason'
'Class:UserRequest/Attribute:freeze_reason+' => '', # ''
'Class:UserRequest/Stimulus:ev_assign' => '割', # 'Assign'
'Class:UserRequest/Stimulus:ev_assign+' => '', # ''
'Class:UserRequest/Stimulus:ev_reassign' => '再割', # 'Reassign'
'Class:UserRequest/Stimulus:ev_reassign+' => '', # ''
'Class:UserRequest/Stimulus:ev_timeout' => '中断(エスカレーション)', # 'ev_timeout'
'Class:UserRequest/Stimulus:ev_timeout+' => '', # ''
'Class:UserRequest/Stimulus:ev_resolve' => '解決済みとする', # 'Mark as resolved'
'Class:UserRequest/Stimulus:ev_resolve+' => '', # ''
'Class:UserRequest/Stimulus:ev_close' => '完了', # 'Close'
'Class:UserRequest/Stimulus:ev_close+' => '', # ''
'Class:UserRequest/Stimulus:ev_freeze' => '保留とする', # 'Mark as pending'
'Class:UserRequest/Stimulus:ev_freeze+' => '', # ''
'Class:UserRequest' => 'ユーザー要求',
'Class:UserRequest+' => '',
'Class:UserRequest/Attribute:request_type' => '要求のタイプ',
'Class:UserRequest/Attribute:request_type+' => '',
'Class:UserRequest/Attribute:request_type/Value:information' => '情報',
'Class:UserRequest/Attribute:request_type/Value:information+' => '情報',
'Class:UserRequest/Attribute:request_type/Value:issue' => '課題',
'Class:UserRequest/Attribute:request_type/Value:issue+' => '課題',
'Class:UserRequest/Attribute:request_type/Value:service request' => 'サービス要求',
'Class:UserRequest/Attribute:request_type/Value:service request+' => 'サービス要求',
'Class:UserRequest/Attribute:freeze_reason' => '保留の理由',
'Class:UserRequest/Attribute:freeze_reason+' => '',
'Class:UserRequest/Stimulus:ev_assign' => '割り当て',
'Class:UserRequest/Stimulus:ev_assign+' => '',
'Class:UserRequest/Stimulus:ev_reassign' => '再割り当て',
'Class:UserRequest/Stimulus:ev_reassign+' => '',
'Class:UserRequest/Stimulus:ev_timeout' => 'ev_タイムアウト',
'Class:UserRequest/Stimulus:ev_timeout+' => '',
'Class:UserRequest/Stimulus:ev_resolve' => '解決済み',
'Class:UserRequest/Stimulus:ev_resolve+' => '',
'Class:UserRequest/Stimulus:ev_close' => 'クローズ',
'Class:UserRequest/Stimulus:ev_close+' => '',
'Class:UserRequest/Stimulus:ev_freeze' => '保留',
'Class:UserRequest/Stimulus:ev_freeze+' => '',
));
?>

View File

@@ -35,27 +35,29 @@
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Menu:ServiceManagement' => 'サービス管理', // 'Service Management', # 'Service Management'
'Menu:ServiceManagement+' => 'サービス管理概要', // 'Service Management Overview', # 'Service Management Overview'
'Menu:Service:Overview' => '概要', # 'Overview'
'Menu:Service:Overview+' => '', # ''
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'サービスレベル別コンタクト', // 'Contracts by service level', # 'Contracts by service level'
'UI-ServiceManagementMenu-ContractsByStatus' => 'ステータス別コンタクト', // 'Contracts by status', # 'Contracts by status'
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => '30日以内に終了するコンタクト', // 'Contracts ending in less then 30 days', # 'Contracts ending in less then 30 days'
'Menu:ServiceType' => 'サービスタイプ', // 'Service Types', # 'Service Types'
'Menu:ServiceType+' => 'サービスタイプ', // 'Service Types', # 'Service Types'
'Menu:ProviderContract' => 'プロバイダコンタクト', // 'Provider Contracts', # 'Provider Contracts'
'Menu:ProviderContract+' => 'プロバイダコンタクト', // 'Provider Contracts', # 'Provider Contracts'
'Menu:CustomerContract' => 'カスタマーコンタクト', // 'Customer Contracts', # 'Customer Contracts'
'Menu:CustomerContract+' => 'カスタマーコンタクト', // 'Customer Contracts', # 'Customer Contracts'
'Menu:ServiceSubcategory' => 'サービスのサブカテゴリ', // 'Service Subcategories', # 'Service Subcategories'
'Menu:ServiceSubcategory+' => 'サービスのサブカテゴリ', // 'Service Subcategories', # 'Service Subcategories'
'Menu:Service' => 'サービス', // 'Services', # 'Services'
'Menu:Service+' => 'サービス', // 'Services', # 'Services'
'Menu:SLA' => 'SLA', // 'SLAs', # 'SLAs'
'Menu:SLA+' => 'サービスレベルアグリーメント', // 'Service Level Agreements', # 'Service Level Agreements'
'Menu:SLT' => 'SLT', // 'SLTs', # 'SLTs'
'Menu:SLT+' => 'サービスレベルターゲット', // 'Service Level Targets', # 'Service Level Targets'
'Menu:ServiceManagement' => 'サービス管理',
'Menu:ServiceManagement+' => 'サービス管理概要',
'Menu:Service:Overview' => '概要',
'Menu:Service:Overview+' => '',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'サービスレベル別連絡先',
'UI-ServiceManagementMenu-ContractsByStatus' => '状態別連絡先',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => '30日以内に終了する契約',
'Menu:ServiceType' => 'サービスタイプ',
'Menu:ServiceType+' => 'サービスタイプ',
'Menu:ProviderContract' => 'プロバイダ契約',
'Menu:ProviderContract+' => 'プロバイダ契約',
'Menu:CustomerContract' => '顧客契約',
'Menu:CustomerContract+' => '顧客契約',
'Menu:ServiceSubcategory' => 'サービスのサブカテゴリ',
'Menu:ServiceSubcategory+' => 'サービスのサブカテゴリ',
'Menu:Service' => 'サービス',
'Menu:Service+' => 'サービス',
'Menu:SLA' => 'SLA',
'Menu:SLA+' => 'サービスレベルアグリーメント',
'Menu:SLT' => 'SLT',
'Menu:SLT+' => 'サービスレベルターゲット',
));
@@ -74,36 +76,36 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:Contract' => '契約', // 'Contract', # 'Contract'
'Class:Contract+' => '', # ''
'Class:Contract/Attribute:name' => '名前', // 'Name', # 'Name'
'Class:Contract/Attribute:name+' => '', # ''
'Class:Contract/Attribute:description' => '詳細記述', // 'Description', # 'Description'
'Class:Contract/Attribute:description+' => '', # ''
'Class:Contract/Attribute:start_date' => '開始日', // 'Start date', # 'Start date'
'Class:Contract/Attribute:start_date+' => '', # ''
'Class:Contract/Attribute:end_date' => '終了日', // 'End date', # 'End date'
'Class:Contract/Attribute:end_date+' => '', # ''
'Class:Contract/Attribute:cost' => 'コスト', // 'Cost', # 'Cost'
'Class:Contract/Attribute:cost+' => '', # ''
'Class:Contract/Attribute:cost_currency' => 'コスト通貨', // 'Cost Currency', # 'Cost Currency'
'Class:Contract/Attribute:cost_currency+' => '', # ''
'Class:Contract/Attribute:cost_currency/Value:dollars' => '米ドル', // 'Dollars', # 'Dollars'
'Class:Contract/Attribute:cost_currency/Value:dollars+' => '', # ''
'Class:Contract/Attribute:cost_currency/Value:euros' => 'ユーロ', // 'Euros', # 'Euros'
'Class:Contract/Attribute:cost_currency/Value:euros+' => '', # ''
'Class:Contract/Attribute:cost_unit' => 'コスト単位', // 'Cost unit', # 'Cost unit'
'Class:Contract/Attribute:cost_unit+' => '', # ''
'Class:Contract/Attribute:billing_frequency' => 'ビリング頻度', // 'Billing frequency', # 'Billing frequency'
'Class:Contract/Attribute:billing_frequency+' => '', # ''
'Class:Contract/Attribute:contact_list' => 'コンタクト', // 'Contacts', # 'Contacts'
'Class:Contract/Attribute:contact_list+' => '契約に関連するコンタクト', // 'Contacts related to the contract', # 'Contacts related to the contract'
'Class:Contract/Attribute:document_list' => 'ドキュメント', // 'Documents', # 'Documents'
'Class:Contract/Attribute:document_list+' => '契約に付随するドキュメント', // 'Documents attached to the contract', # 'Documents attached to the contract'
'Class:Contract/Attribute:ci_list' => 'CI', // 'CIs', # 'CIs'
'Class:Contract/Attribute:ci_list+' => '契約でサポートされるCI', // 'CI supported by the contract', # 'CI supported by the contract'
'Class:Contract/Attribute:finalclass' => 'タイプ', // 'Type', # 'Type'
'Class:Contract/Attribute:finalclass+' => '', # ''
'Class:Contract' => '契約',
'Class:Contract+' => '',
'Class:Contract/Attribute:name' => '名前',
'Class:Contract/Attribute:name+' => '',
'Class:Contract/Attribute:description' => '説明',
'Class:Contract/Attribute:description+' => '',
'Class:Contract/Attribute:start_date' => '開始日',
'Class:Contract/Attribute:start_date+' => '',
'Class:Contract/Attribute:end_date' => '終了日',
'Class:Contract/Attribute:end_date+' => '',
'Class:Contract/Attribute:cost' => '費用',
'Class:Contract/Attribute:cost+' => '',
'Class:Contract/Attribute:cost_currency' => '費用通貨',
'Class:Contract/Attribute:cost_currency+' => '',
'Class:Contract/Attribute:cost_currency/Value:dollars' => '米ドル',
'Class:Contract/Attribute:cost_currency/Value:dollars+' => '',
'Class:Contract/Attribute:cost_currency/Value:euros' => 'ユーロ',
'Class:Contract/Attribute:cost_currency/Value:euros+' => '',
'Class:Contract/Attribute:cost_unit' => '費用単位',
'Class:Contract/Attribute:cost_unit+' => '',
'Class:Contract/Attribute:billing_frequency' => '課金頻度',
'Class:Contract/Attribute:billing_frequency+' => '',
'Class:Contract/Attribute:contact_list' => '連絡先',
'Class:Contract/Attribute:contact_list+' => 'この契約に関連する連絡先',
'Class:Contract/Attribute:document_list' => '文書',
'Class:Contract/Attribute:document_list+' => 'この契約に付随する文書',
'Class:Contract/Attribute:ci_list' => 'CI',
'Class:Contract/Attribute:ci_list+' => 'この契約でサポートされるCI',
'Class:Contract/Attribute:finalclass' => 'タイプ',
'Class:Contract/Attribute:finalclass+' => '',
));
//
@@ -111,16 +113,16 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:ProviderContract' => 'プロバイダ契約', // 'Provider Contract', # 'Provider Contract'
'Class:ProviderContract+' => '', # ''
'Class:ProviderContract/Attribute:provider_id' => 'プロバイダ', // 'Provider', # 'Provider'
'Class:ProviderContract/Attribute:provider_id+' => '', # ''
'Class:ProviderContract/Attribute:provider_name' => 'プロバイダ名', // 'Provider name', # 'Provider name'
'Class:ProviderContract/Attribute:provider_name+' => '', # ''
'Class:ProviderContract/Attribute:sla' => 'SLA', # 'SLA'
'Class:ProviderContract/Attribute:sla+' => 'サービスレベルアグリーメント', // 'Service Level Agreement', # 'Service Level Agreement'
'Class:ProviderContract/Attribute:coverage' => 'サービス時間', // 'Service hours', # 'Service hours'
'Class:ProviderContract/Attribute:coverage+' => '', # ''
'Class:ProviderContract' => 'プロバイダ契約',
'Class:ProviderContract+' => '',
'Class:ProviderContract/Attribute:provider_id' => 'プロバイダ',
'Class:ProviderContract/Attribute:provider_id+' => '',
'Class:ProviderContract/Attribute:provider_name' => 'プロバイダ名',
'Class:ProviderContract/Attribute:provider_name+' => '',
'Class:ProviderContract/Attribute:sla' => 'SLA',
'Class:ProviderContract/Attribute:sla+' => 'サービスレベルアグリーメント',
'Class:ProviderContract/Attribute:coverage' => 'サービス時間',
'Class:ProviderContract/Attribute:coverage+' => '',
));
//
@@ -128,47 +130,46 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:CustomerContract' => 'カスタマ契約', // 'Customer Contract', # 'Customer Contract'
'Class:CustomerContract+' => '', # ''
'Class:CustomerContract/Attribute:org_id' => 'カスタマ', // 'Customer', # 'Customer'
'Class:CustomerContract/Attribute:org_id+' => '', # ''
'Class:CustomerContract/Attribute:org_name' => 'カスタマ名', // 'Customer name', # 'Customer name'
'Class:CustomerContract/Attribute:org_name+' => '', # ''
'Class:CustomerContract/Attribute:provider_id' => 'プロバイダ', // 'Provider', # 'Provider'
'Class:CustomerContract/Attribute:provider_id+' => '', # ''
'Class:CustomerContract/Attribute:provider_name' => 'プロバイダ名', // 'Provider name', # 'Provider name'
'Class:CustomerContract/Attribute:provider_name+' => '', # ''
'Class:CustomerContract/Attribute:support_team_id' => 'サポートチーム', // 'Support team', # 'Support team'
'Class:CustomerContract/Attribute:support_team_id+' => '', # ''
'Class:CustomerContract/Attribute:support_team_name' => 'サポートチーム', // 'Support team', # 'Support team'
'Class:CustomerContract/Attribute:support_team_name+' => '', # ''
'Class:CustomerContract/Attribute:provider_list' => 'プロバイダ', // 'Providers', # 'Providers'
'Class:CustomerContract/Attribute:provider_list+' => '', # ''
'Class:CustomerContract/Attribute:sla_list' => 'SLA', // 'SLAs', # 'SLAs'
'Class:CustomerContract/Attribute:sla_list+' => '契約に関連するSLAリスト', // 'List of SLA related to the contract', # 'List of SLA related to the contract'
'Class:CustomerContract/Attribute:provider_list' => '前提となる契約', // 'Underpinning Contracts', # 'Underpinning Contracts'
'Class:CustomerContract/Attribute:sla_list+' => '', # ''
'Class:CustomerContract' => '顧客契約',
'Class:CustomerContract+' => '',
'Class:CustomerContract/Attribute:org_id' => '顧客',
'Class:CustomerContract/Attribute:org_id+' => '',
'Class:CustomerContract/Attribute:org_name' => '顧客名',
'Class:CustomerContract/Attribute:org_name+' => '',
'Class:CustomerContract/Attribute:provider_id' => 'プロバイダ',
'Class:CustomerContract/Attribute:provider_id+' => '',
'Class:CustomerContract/Attribute:provider_name' => 'プロバイダ名',
'Class:CustomerContract/Attribute:provider_name+' => '',
'Class:CustomerContract/Attribute:support_team_id' => 'サポートチーム',
'Class:CustomerContract/Attribute:support_team_id+' => '',
'Class:CustomerContract/Attribute:support_team_name' => 'サポートチーム',
'Class:CustomerContract/Attribute:support_team_name+' => '',
'Class:CustomerContract/Attribute:provider_list' => 'プロバイダ',
'Class:CustomerContract/Attribute:provider_list+' => '',
'Class:CustomerContract/Attribute:sla_list' => 'SLA',
'Class:CustomerContract/Attribute:sla_list+' => 'この契約に関連するSLAリスト',
'Class:CustomerContract/Attribute:provider_list' => '前提となる契約', // 'Underpinning Contracts',
'Class:CustomerContract/Attribute:sla_list+' => '',
));
//
// Class: lnkCustomerContractToProviderContract
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkCustomerContractToProviderContract' => 'カスタマー契約とプロバイダ契約のリンク', // 'lnkCustomerContractToProviderContract', # 'lnkCustomerContractToProviderContract'
'Class:lnkCustomerContractToProviderContract+' => '', # ''
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id' => 'カスタマ契約', // 'Customer Contract', # 'Customer Contract'
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id+' => '', # ''
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name' => '名前', // 'Name', # 'Name'
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name+' => '', # ''
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id' => 'プロバイダ契約', // 'Provider Contract', # 'Provider Contract'
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id+' => '', # ''
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name' => '名前', // 'Name', # 'Name'
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name+' => '', # ''
'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla' => 'プロバイダSLA', // 'Provider SLA', # 'Provider SLA'
'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla+' => 'サービスレベルアグリーメント', // 'Service Level Agreement', # 'Service Level Agreement'
'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage' => 'サービス時間', // 'Service hours', # 'Service hours'
'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage+' => '', # ''
'Class:lnkCustomerContractToProviderContract' => '顧客契約とプロバイダ契約のリンク',
'Class:lnkCustomerContractToProviderContract+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id' => 'カスタマ契約',
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name' => '名前',
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id' => 'プロバイダ契約',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name' => '名前',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla' => 'プロバイダSLA',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla+' => 'サービスレベルアグリーメント',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage' => 'サービス時間',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage+' => '',
));
@@ -177,18 +178,18 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkContractToSLA' => '契約/SLA', // 'Contract/SLA', # 'Contract/SLA'
'Class:lnkContractToSLA+' => '', # ''
'Class:lnkContractToSLA/Attribute:contract_id' => '契約', // 'Contract', # 'Contract'
'Class:lnkContractToSLA/Attribute:contract_id+' => '', # ''
'Class:lnkContractToSLA/Attribute:contract_name' => '契約', // 'Contract', # 'Contract'
'Class:lnkContractToSLA/Attribute:contract_name+' => '', # ''
'Class:lnkContractToSLA/Attribute:sla_id' => 'SLA', # 'SLA'
'Class:lnkContractToSLA/Attribute:sla_id+' => '', # ''
'Class:lnkContractToSLA/Attribute:sla_name' => 'SLA', # 'SLA'
'Class:lnkContractToSLA/Attribute:sla_name+' => '', # ''
'Class:lnkContractToSLA/Attribute:coverage' => 'サービス時間', // 'Service Hours', # 'Service Hours'
'Class:lnkContractToSLA/Attribute:coverage+' => '', # ''
'Class:lnkContractToSLA' => '契約/SLA',
'Class:lnkContractToSLA+' => '',
'Class:lnkContractToSLA/Attribute:contract_id' => '契約',
'Class:lnkContractToSLA/Attribute:contract_id+' => '',
'Class:lnkContractToSLA/Attribute:contract_name' => '契約',
'Class:lnkContractToSLA/Attribute:contract_name+' => '',
'Class:lnkContractToSLA/Attribute:sla_id' => 'SLA',
'Class:lnkContractToSLA/Attribute:sla_id+' => '',
'Class:lnkContractToSLA/Attribute:sla_name' => 'SLA',
'Class:lnkContractToSLA/Attribute:sla_name+' => '',
'Class:lnkContractToSLA/Attribute:coverage' => 'サービス時間',
'Class:lnkContractToSLA/Attribute:coverage+' => '',
));
//
@@ -196,20 +197,20 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkContractToDoc' => '契約/ドキュメント', // 'Contract/Doc', # 'Contract/Doc'
'Class:lnkContractToDoc+' => '', # ''
'Class:lnkContractToDoc/Attribute:contract_id' => '契約', // 'Contract', # 'Contract'
'Class:lnkContractToDoc/Attribute:contract_id+' => '', # ''
'Class:lnkContractToDoc/Attribute:contract_name' => '契約', // 'Contract', # 'Contract'
'Class:lnkContractToDoc/Attribute:contract_name+' => '', # ''
'Class:lnkContractToDoc/Attribute:document_id' => 'ドキュメント', // 'Document', # 'Document'
'Class:lnkContractToDoc/Attribute:document_id+' => '', # ''
'Class:lnkContractToDoc/Attribute:document_name' => 'ドキュメント', // 'Document', # 'Document'
'Class:lnkContractToDoc/Attribute:document_name+' => '', # ''
'Class:lnkContractToDoc/Attribute:document_type' => 'ドキュメントタイプ', // 'Document type', # 'Document type'
'Class:lnkContractToDoc/Attribute:document_type+' => '', # ''
'Class:lnkContractToDoc/Attribute:document_status' => 'ドキュメントステータス', // 'Document status', # 'Document status'
'Class:lnkContractToDoc/Attribute:document_status+' => '', # ''
'Class:lnkContractToDoc' => '契約/文書',
'Class:lnkContractToDoc+' => '',
'Class:lnkContractToDoc/Attribute:contract_id' => '契約',
'Class:lnkContractToDoc/Attribute:contract_id+' => '',
'Class:lnkContractToDoc/Attribute:contract_name' => '契約',
'Class:lnkContractToDoc/Attribute:contract_name+' => '',
'Class:lnkContractToDoc/Attribute:document_id' => '文書',
'Class:lnkContractToDoc/Attribute:document_id+' => '',
'Class:lnkContractToDoc/Attribute:document_name' => '文書',
'Class:lnkContractToDoc/Attribute:document_name+' => '',
'Class:lnkContractToDoc/Attribute:document_type' => '文書のタイプ',
'Class:lnkContractToDoc/Attribute:document_type+' => '',
'Class:lnkContractToDoc/Attribute:document_status' => '文書の状態',
'Class:lnkContractToDoc/Attribute:document_status+' => '',
));
//
@@ -217,20 +218,20 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkContractToContact' => '契約/コンタクト', // 'Contract/Contact', # 'Contract/Contact'
'Class:lnkContractToContact+' => '', # ''
'Class:lnkContractToContact/Attribute:contract_id' => '契約', // 'Contract', # 'Contract'
'Class:lnkContractToContact/Attribute:contract_id+' => '', # ''
'Class:lnkContractToContact/Attribute:contract_name' => '契約', // 'Contract', # 'Contract'
'Class:lnkContractToContact/Attribute:contract_name+' => '', # ''
'Class:lnkContractToContact/Attribute:contact_id' => 'コンタクト', // 'Contact', # 'Contact'
'Class:lnkContractToContact/Attribute:contact_id+' => '', # ''
'Class:lnkContractToContact/Attribute:contact_name' => 'コンタクト', // 'Contact', # 'Contact'
'Class:lnkContractToContact/Attribute:contact_name+' => '', # ''
'Class:lnkContractToContact/Attribute:contact_email' => 'コンタクトEメール', // 'Contact email', # 'Contact email'
'Class:lnkContractToContact/Attribute:contact_email+' => '', # ''
'Class:lnkContractToContact/Attribute:role' => '役割', // 'Role', # 'Role'
'Class:lnkContractToContact/Attribute:role+' => '', # ''
'Class:lnkContractToContact' => '契約/連絡先',
'Class:lnkContractToContact+' => '',
'Class:lnkContractToContact/Attribute:contract_id' => '契約',
'Class:lnkContractToContact/Attribute:contract_id+' => '',
'Class:lnkContractToContact/Attribute:contract_name' => '契約',
'Class:lnkContractToContact/Attribute:contract_name+' => '',
'Class:lnkContractToContact/Attribute:contact_id' => '連絡先',
'Class:lnkContractToContact/Attribute:contact_id+' => '',
'Class:lnkContractToContact/Attribute:contact_name' => '連絡先',
'Class:lnkContractToContact/Attribute:contact_name+' => '',
'Class:lnkContractToContact/Attribute:contact_email' => '連絡先Eメール',
'Class:lnkContractToContact/Attribute:contact_email+' => '',
'Class:lnkContractToContact/Attribute:role' => '役割',
'Class:lnkContractToContact/Attribute:role+' => '',
));
//
@@ -238,18 +239,18 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkContractToCI' => '契約/CI', // 'Contract/CI', # 'Contract/CI'
'Class:lnkContractToCI+' => '', # ''
'Class:lnkContractToCI/Attribute:contract_id' => '契約', // 'Contract', # 'Contract'
'Class:lnkContractToCI/Attribute:contract_id+' => '', # ''
'Class:lnkContractToCI/Attribute:contract_name' => '契約', // 'Contract', # 'Contract'
'Class:lnkContractToCI/Attribute:contract_name+' => '', # ''
'Class:lnkContractToCI/Attribute:ci_id' => 'CI', # 'CI'
'Class:lnkContractToCI/Attribute:ci_id+' => '', # ''
'Class:lnkContractToCI/Attribute:ci_name' => 'CI', # 'CI'
'Class:lnkContractToCI/Attribute:ci_name+' => '', # ''
'Class:lnkContractToCI/Attribute:ci_status' => 'CIステータス', // 'CI status', # 'CI status'
'Class:lnkContractToCI/Attribute:ci_status+' => '', # ''
'Class:lnkContractToCI' => '契約/CI',
'Class:lnkContractToCI+' => '',
'Class:lnkContractToCI/Attribute:contract_id' => '契約',
'Class:lnkContractToCI/Attribute:contract_id+' => '',
'Class:lnkContractToCI/Attribute:contract_name' => '契約',
'Class:lnkContractToCI/Attribute:contract_name+' => '',
'Class:lnkContractToCI/Attribute:ci_id' => 'CI',
'Class:lnkContractToCI/Attribute:ci_id+' => '',
'Class:lnkContractToCI/Attribute:ci_name' => 'CI',
'Class:lnkContractToCI/Attribute:ci_name+' => '',
'Class:lnkContractToCI/Attribute:ci_status' => 'CIの状態',
'Class:lnkContractToCI/Attribute:ci_status+' => '',
));
//
@@ -257,40 +258,40 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:Service' => 'サービス', // 'Service', # 'Service'
'Class:Service+' => '', # ''
'Class:Service/Attribute:org_id' => 'プロバイダ', // 'Provider', # 'Provider'
'Class:Service/Attribute:org_id+' => '', # ''
'Class:Service/Attribute:provider_name' => 'プロバイダ', // 'Provider', # 'Provider'
'Class:Service/Attribute:provider_name+' => '', # ''
'Class:Service/Attribute:name' => '名前', // 'Name', # 'Name'
'Class:Service/Attribute:name+' => '', # ''
'Class:Service/Attribute:description' => '詳細記述', // 'Description', # 'Description'
'Class:Service/Attribute:description+' => '', # ''
'Class:Service/Attribute:type' => 'タイプ', // 'Type', # 'Type'
'Class:Service/Attribute:type+' => '', # ''
'Class:Service/Attribute:type/Value:IncidentManagement' => 'インシデント管理', # 'Incident Management'
'Class:Service/Attribute:type/Value:IncidentManagement+' => 'インシデント管理', # 'Incident Management'
'Class:Service/Attribute:type/Value:RequestManagement' => 'リクエスト管理', # 'Request Management'
'Class:Service/Attribute:type/Value:RequestManagement+' => 'リクエスト管理', # 'Request Management'
'Class:Service/Attribute:status' => 'Status', # 'Status'
'Class:Service/Attribute:status+' => '', # ''
'Class:Service/Attribute:status/Value:design' => '設計', // 'Design', # 'Design'
'Class:Service/Attribute:status/Value:design+' => '', # ''
'Class:Service/Attribute:status/Value:obsolete' => 'すでに利用されていない', // 'Obsolete', # 'Obsolete'
'Class:Service/Attribute:status/Value:obsolete+' => '', # ''
'Class:Service/Attribute:status/Value:production' => 'プロダクション', // 'Production', # 'Production'
'Class:Service/Attribute:status/Value:production+' => '', # ''
'Class:Service/Attribute:subcategory_list' => 'サービスサブカテゴリ', // 'Service subcategories', # 'Service subcategories'
'Class:Service/Attribute:subcategory_list+' => '', # ''
'Class:Service/Attribute:sla_list' => 'SLA', // 'SLAs', # 'SLAs'
'Class:Service/Attribute:sla_list+' => '', # ''
'Class:Service/Attribute:document_list' => 'ドキュメント', // 'Documents', # 'Documents'
'Class:Service/Attribute:document_list+' => 'サービスに添付されているドキュメント', // 'Documents attached to the service', # 'Documents attached to the service'
'Class:Service/Attribute:contact_list' => 'コンタクト', // 'Contacts', # 'Contacts'
'Class:Service/Attribute:contact_list+' => 'サービスに対する役割を保持するコンタクト', // 'Contacts having a role for this service', # 'Contacts having a role for this service'
'Class:Service/Tab:Related_Contracts' => '関連する契約', // 'Related Contracts', # 'Related Contracts'
'Class:Service/Tab:Related_Contracts+' => 'サービスに締結された契約', // 'Contracts signed for this service', # 'Contracts signed for this service'
'Class:Service' => 'サービス',
'Class:Service+' => '',
'Class:Service/Attribute:org_id' => 'プロバイダ',
'Class:Service/Attribute:org_id+' => '',
'Class:Service/Attribute:provider_name' => 'プロバイダ',
'Class:Service/Attribute:provider_name+' => '',
'Class:Service/Attribute:name' => '名前',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:description' => '説明',
'Class:Service/Attribute:description+' => '',
'Class:Service/Attribute:type' => 'タイプ',
'Class:Service/Attribute:type+' => '',
'Class:Service/Attribute:type/Value:IncidentManagement' => 'インシデント管理',
'Class:Service/Attribute:type/Value:IncidentManagement+' => 'インシデント管理',
'Class:Service/Attribute:type/Value:RequestManagement' => '要求管理',
'Class:Service/Attribute:type/Value:RequestManagement+' => '要求管理',
'Class:Service/Attribute:status' => '状態',
'Class:Service/Attribute:status+' => '',
'Class:Service/Attribute:status/Value:design' => '設計',
'Class:Service/Attribute:status/Value:design+' => '',
'Class:Service/Attribute:status/Value:obsolete' => '廃止済',
'Class:Service/Attribute:status/Value:obsolete+' => '',
'Class:Service/Attribute:status/Value:production' => '稼働中',
'Class:Service/Attribute:status/Value:production+' => '',
'Class:Service/Attribute:subcategory_list' => 'サービスサブカテゴリ',
'Class:Service/Attribute:subcategory_list+' => '',
'Class:Service/Attribute:sla_list' => 'SLA',
'Class:Service/Attribute:sla_list+' => '',
'Class:Service/Attribute:document_list' => '文書',
'Class:Service/Attribute:document_list+' => 'サービスに添付されている文書',
'Class:Service/Attribute:contact_list' => '連絡先',
'Class:Service/Attribute:contact_list+' => 'このサービスの役割を持つ連絡先',
'Class:Service/Tab:Related_Contracts' => '関連する契約',
'Class:Service/Tab:Related_Contracts+' => 'このサービスのために締結された契約',
));
//
@@ -298,16 +299,16 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:ServiceSubcategory' => 'サービスサブカテゴリ', // 'Service Subcategory', # 'Service Subcategory'
'Class:ServiceSubcategory+' => '', # ''
'Class:ServiceSubcategory/Attribute:name' => '名前', // 'Name', # 'Name'
'Class:ServiceSubcategory/Attribute:name+' => '', # ''
'Class:ServiceSubcategory/Attribute:description' => '詳細記述', // 'Description', # 'Description'
'Class:ServiceSubcategory/Attribute:description+' => '', # ''
'Class:ServiceSubcategory/Attribute:service_id' => 'サービス', // 'Service', # 'Service'
'Class:ServiceSubcategory/Attribute:service_id+' => '', # ''
'Class:ServiceSubcategory/Attribute:service_name' => 'サービス', // 'Service', # 'Service'
'Class:ServiceSubcategory/Attribute:service_name+' => '', # ''
'Class:ServiceSubcategory' => 'サービスサブカテゴリ',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/Attribute:name' => '名前',
'Class:ServiceSubcategory/Attribute:name+' => '',
'Class:ServiceSubcategory/Attribute:description' => '説明',
'Class:ServiceSubcategory/Attribute:description+' => '',
'Class:ServiceSubcategory/Attribute:service_id' => 'サービス',
'Class:ServiceSubcategory/Attribute:service_id+' => '',
'Class:ServiceSubcategory/Attribute:service_name' => 'サービス',
'Class:ServiceSubcategory/Attribute:service_name+' => '',
));
//
@@ -315,16 +316,16 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:SLA' => 'SLA', # 'SLA'
'Class:SLA+' => '', # ''
'Class:SLA/Attribute:name' => '名前', // 'Name', # 'Name'
'Class:SLA/Attribute:name+' => '', # ''
'Class:SLA/Attribute:service_id' => 'サービス', // 'Service', # 'Service'
'Class:SLA/Attribute:service_id+' => '', # ''
'Class:SLA/Attribute:service_name' => 'サービス', // 'Service', # 'Service'
'Class:SLA/Attribute:service_name+' => '', # ''
'Class:SLA/Attribute:slt_list' => 'SLT', // 'SLTs', # 'SLTs'
'Class:SLA/Attribute:slt_list+' => 'サービスレベル閾値リスト', // 'List Service Level Thresholds', # 'List Service Level Thresholds'
'Class:SLA' => 'SLA',
'Class:SLA+' => '',
'Class:SLA/Attribute:name' => '名前',
'Class:SLA/Attribute:name+' => '',
'Class:SLA/Attribute:service_id' => 'サービス',
'Class:SLA/Attribute:service_id+' => '',
'Class:SLA/Attribute:service_name' => 'サービス',
'Class:SLA/Attribute:service_name+' => '',
'Class:SLA/Attribute:slt_list' => 'SLT',
'Class:SLA/Attribute:slt_list+' => 'サービスレベル閾値リスト',
));
//
@@ -332,36 +333,36 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:SLT' => 'SLT', # 'SLT'
'Class:SLT+' => '', # ''
'Class:SLT/Attribute:name' => '名前', // 'Name', # 'Name'
'Class:SLT/Attribute:name+' => '', # ''
'Class:SLT/Attribute:metric' => 'メトリック', // 'Metric', # 'Metric'
'Class:SLT/Attribute:metric+' => '', # ''
'Class:SLT/Attribute:metric/Value:TTO' => 'TTO', # 'TTO'
'Class:SLT/Attribute:metric/Value:TTO+' => 'TTO', # 'TTO'
'Class:SLT/Attribute:metric/Value:TTR' => 'TTR', # 'TTR'
'Class:SLT/Attribute:metric/Value:TTR+' => 'TTR', # 'TTR'
'Class:SLT/Attribute:ticket_priority' => 'チケットプライオリティ', // 'Ticket priority', # 'Ticket priority'
'Class:SLT/Attribute:ticket_priority+' => '', # ''
'Class:SLT/Attribute:ticket_priority/Value:1' => '1', # '1'
'Class:SLT/Attribute:ticket_priority/Value:1+' => '1', # '1'
'Class:SLT/Attribute:ticket_priority/Value:2' => '2', # '2'
'Class:SLT/Attribute:ticket_priority/Value:2+' => '2', # '2'
'Class:SLT/Attribute:ticket_priority/Value:3' => '3', # '3'
'Class:SLT/Attribute:ticket_priority/Value:3+' => '3', # '3'
'Class:SLT/Attribute:value' => '値', // 'Value', # 'Value'
'Class:SLT/Attribute:value+' => '', # ''
'Class:SLT/Attribute:value_unit' => '単位', // 'Unit', # 'Unit'
'Class:SLT/Attribute:value_unit+' => '', # ''
'Class:SLT/Attribute:value_unit/Value:days' => '日', // 'days', # 'days'
'Class:SLT/Attribute:value_unit/Value:days+' => '日', // 'days', # 'days'
'Class:SLT/Attribute:value_unit/Value:hours' => '時', // 'hours', # 'hours'
'Class:SLT/Attribute:value_unit/Value:hours+' => '時', // 'hours', # 'hours'
'Class:SLT/Attribute:value_unit/Value:minutes' => '分', // 'minutes', # 'minutes'
'Class:SLT/Attribute:value_unit/Value:minutes+' => '分', // 'minutes', # 'minutes'
'Class:SLT/Attribute:sla_list' => 'SLA', // 'SLAs', # 'SLAs'
'Class:SLT/Attribute:sla_list+' => 'SLTを使うSLA', // 'SLAs using the SLT', # 'SLAs using the SLT'
'Class:SLT' => 'SLT',
'Class:SLT+' => 'SLT サービスレベルターゲット',
'Class:SLT/Attribute:name' => '名前',
'Class:SLT/Attribute:name+' => '',
'Class:SLT/Attribute:metric' => 'メトリック',
'Class:SLT/Attribute:metric+' => '',
'Class:SLT/Attribute:metric/Value:TTO' => 'TTO',
'Class:SLT/Attribute:metric/Value:TTO+' => 'TTO Time To Own, 対応開始までの時間', # 'TTO'
'Class:SLT/Attribute:metric/Value:TTR' => 'TTR',
'Class:SLT/Attribute:metric/Value:TTR+' => 'TTR Time To Resolve, 解決までの時間', # 'TTR'
'Class:SLT/Attribute:ticket_priority' => 'チケット優先度',
'Class:SLT/Attribute:ticket_priority+' => '',
'Class:SLT/Attribute:ticket_priority/Value:1' => '1',
'Class:SLT/Attribute:ticket_priority/Value:1+' => '1',
'Class:SLT/Attribute:ticket_priority/Value:2' => '2',
'Class:SLT/Attribute:ticket_priority/Value:2+' => '2',
'Class:SLT/Attribute:ticket_priority/Value:3' => '3',
'Class:SLT/Attribute:ticket_priority/Value:3+' => '3',
'Class:SLT/Attribute:value' => '値',
'Class:SLT/Attribute:value+' => '',
'Class:SLT/Attribute:value_unit' => '単位',
'Class:SLT/Attribute:value_unit+' => '',
'Class:SLT/Attribute:value_unit/Value:days' => '日',
'Class:SLT/Attribute:value_unit/Value:days+' => '日',
'Class:SLT/Attribute:value_unit/Value:hours' => '時',
'Class:SLT/Attribute:value_unit/Value:hours+' => '時',
'Class:SLT/Attribute:value_unit/Value:minutes' => '分',
'Class:SLT/Attribute:value_unit/Value:minutes+' => '分',
'Class:SLT/Attribute:sla_list' => 'SLA',
'Class:SLT/Attribute:sla_list+' => 'このSLTを使うSLA',
));
//
@@ -369,24 +370,24 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkSLTToSLA' => 'SLT/SLA', # 'SLT/SLA'
'Class:lnkSLTToSLA+' => '', # ''
'Class:lnkSLTToSLA/Attribute:sla_id' => 'SLA', # 'SLA'
'Class:lnkSLTToSLA/Attribute:sla_id+' => '', # ''
'Class:lnkSLTToSLA/Attribute:sla_name' => 'SLA', # 'SLA'
'Class:lnkSLTToSLA/Attribute:sla_name+' => '', # ''
'Class:lnkSLTToSLA/Attribute:slt_id' => 'SLT', # 'SLT'
'Class:lnkSLTToSLA/Attribute:slt_id+' => '', # ''
'Class:lnkSLTToSLA/Attribute:slt_name' => 'SLT', # 'SLT'
'Class:lnkSLTToSLA/Attribute:slt_name+' => '', # ''
'Class:lnkSLTToSLA/Attribute:slt_metric' => 'メトリック', // 'Metric', # 'Metric'
'Class:lnkSLTToSLA/Attribute:slt_metric+' => '', # ''
'Class:lnkSLTToSLA/Attribute:slt_ticket_priority' => 'チケットプライオリティ', // 'Ticket priority', # 'Ticket priority'
'Class:lnkSLTToSLA/Attribute:slt_ticket_priority+' => '', # ''
'Class:lnkSLTToSLA/Attribute:slt_value' => '値', // 'Value', # 'Value'
'Class:lnkSLTToSLA/Attribute:slt_value+' => '', # ''
'Class:lnkSLTToSLA/Attribute:slt_value_unit' => '単位', // 'Unit', # 'Unit'
'Class:lnkSLTToSLA/Attribute:slt_value_unit+' => '', # ''
'Class:lnkSLTToSLA' => 'SLT/SLA',
'Class:lnkSLTToSLA+' => '',
'Class:lnkSLTToSLA/Attribute:sla_id' => 'SLA',
'Class:lnkSLTToSLA/Attribute:sla_id+' => '',
'Class:lnkSLTToSLA/Attribute:sla_name' => 'SLA',
'Class:lnkSLTToSLA/Attribute:sla_name+' => '',
'Class:lnkSLTToSLA/Attribute:slt_id' => 'SLT',
'Class:lnkSLTToSLA/Attribute:slt_id+' => '',
'Class:lnkSLTToSLA/Attribute:slt_name' => 'SLT',
'Class:lnkSLTToSLA/Attribute:slt_name+' => '',
'Class:lnkSLTToSLA/Attribute:slt_metric' => 'メトリック',
'Class:lnkSLTToSLA/Attribute:slt_metric+' => '',
'Class:lnkSLTToSLA/Attribute:slt_ticket_priority' => 'チケット優先度',
'Class:lnkSLTToSLA/Attribute:slt_ticket_priority+' => '',
'Class:lnkSLTToSLA/Attribute:slt_value' => '値',
'Class:lnkSLTToSLA/Attribute:slt_value+' => '',
'Class:lnkSLTToSLA/Attribute:slt_value_unit' => '単位',
'Class:lnkSLTToSLA/Attribute:slt_value_unit+' => '',
));
//
@@ -394,20 +395,20 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkServiceToDoc' => 'サービス/ドキュメント', // 'Service/Doc', # 'Service/Doc'
'Class:lnkServiceToDoc+' => '', # ''
'Class:lnkServiceToDoc/Attribute:service_id' => 'サービス', // 'Service', # 'Service'
'Class:lnkServiceToDoc/Attribute:service_id+' => '', # ''
'Class:lnkServiceToDoc/Attribute:service_name' => 'サービス', // 'Service', # 'Service'
'Class:lnkServiceToDoc/Attribute:service_name+' => '', # ''
'Class:lnkServiceToDoc/Attribute:document_id' => 'ドキュメント', // 'Document', # 'Document'
'Class:lnkServiceToDoc/Attribute:document_id+' => '', # ''
'Class:lnkServiceToDoc/Attribute:document_name' => 'ドキュメント', // 'Document', # 'Document'
'Class:lnkServiceToDoc/Attribute:document_name+' => '', # ''
'Class:lnkServiceToDoc/Attribute:document_type' => 'ドキュメントタイプ', // 'Document type', # 'Document type'
'Class:lnkServiceToDoc/Attribute:document_type+' => '', # ''
'Class:lnkServiceToDoc/Attribute:document_status' => 'ドキュメントステータス', // 'Document status', # 'Document status'
'Class:lnkServiceToDoc/Attribute:document_status+' => '', # ''
'Class:lnkServiceToDoc' => 'サービス/文書',
'Class:lnkServiceToDoc+' => '',
'Class:lnkServiceToDoc/Attribute:service_id' => 'サービス',
'Class:lnkServiceToDoc/Attribute:service_id+' => '',
'Class:lnkServiceToDoc/Attribute:service_name' => 'サービス',
'Class:lnkServiceToDoc/Attribute:service_name+' => '',
'Class:lnkServiceToDoc/Attribute:document_id' => '文書',
'Class:lnkServiceToDoc/Attribute:document_id+' => '',
'Class:lnkServiceToDoc/Attribute:document_name' => '文書',
'Class:lnkServiceToDoc/Attribute:document_name+' => '',
'Class:lnkServiceToDoc/Attribute:document_type' => '文書のタイプ',
'Class:lnkServiceToDoc/Attribute:document_type+' => '',
'Class:lnkServiceToDoc/Attribute:document_status' => '文書の状態',
'Class:lnkServiceToDoc/Attribute:document_status+' => '',
));
//
@@ -415,20 +416,20 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkServiceToContact' => 'サービス/コンタクト', // 'Service/Contact', # 'Service/Contact'
'Class:lnkServiceToContact+' => '', # ''
'Class:lnkServiceToContact/Attribute:service_id' => 'サービス', // 'Service', # 'Service'
'Class:lnkServiceToContact/Attribute:service_id+' => '', # ''
'Class:lnkServiceToContact/Attribute:service_name' => 'サービス', // 'Service', # 'Service'
'Class:lnkServiceToContact/Attribute:service_name+' => '', # ''
'Class:lnkServiceToContact/Attribute:contact_id' => 'コンタクト', // 'Contact', # 'Contact'
'Class:lnkServiceToContact/Attribute:contact_id+' => '', # ''
'Class:lnkServiceToContact/Attribute:contact_name' => 'コンタクト', // 'Contact', # 'Contact'
'Class:lnkServiceToContact/Attribute:contact_name+' => '', # ''
'Class:lnkServiceToContact/Attribute:contact_email' => 'コンタクトEメール', // 'Contact email', # 'Contact email'
'Class:lnkServiceToContact/Attribute:contact_email+' => '', # ''
'Class:lnkServiceToContact/Attribute:role' => '役割', // 'Role', # 'Role'
'Class:lnkServiceToContact/Attribute:role+' => '', # ''
'Class:lnkServiceToContact' => 'サービス/連絡先',
'Class:lnkServiceToContact+' => '',
'Class:lnkServiceToContact/Attribute:service_id' => 'サービス',
'Class:lnkServiceToContact/Attribute:service_id+' => '',
'Class:lnkServiceToContact/Attribute:service_name' => 'サービス',
'Class:lnkServiceToContact/Attribute:service_name+' => '',
'Class:lnkServiceToContact/Attribute:contact_id' => '連絡先',
'Class:lnkServiceToContact/Attribute:contact_id+' => '',
'Class:lnkServiceToContact/Attribute:contact_name' => '連絡先',
'Class:lnkServiceToContact/Attribute:contact_name+' => '',
'Class:lnkServiceToContact/Attribute:contact_email' => '連絡先Eメール',
'Class:lnkServiceToContact/Attribute:contact_email+' => '',
'Class:lnkServiceToContact/Attribute:role' => '役割',
'Class:lnkServiceToContact/Attribute:role+' => '',
));
//
@@ -436,18 +437,19 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkServiceToCI' => 'サービス/CI', // 'Service/CI', # 'Service/CI'
'Class:lnkServiceToCI+' => '', # ''
'Class:lnkServiceToCI/Attribute:service_id' => 'サービス', // 'Service', # 'Service'
'Class:lnkServiceToCI/Attribute:service_id+' => '', # ''
'Class:lnkServiceToCI/Attribute:service_name' => 'サービス', // 'Service', # 'Service'
'Class:lnkServiceToCI/Attribute:service_name+' => '', # ''
'Class:lnkServiceToCI/Attribute:ci_id' => 'CI', # 'CI'
'Class:lnkServiceToCI/Attribute:ci_id+' => '', # ''
'Class:lnkServiceToCI/Attribute:ci_name' => 'CI', # 'CI'
'Class:lnkServiceToCI/Attribute:ci_name+' => '', # ''
'Class:lnkServiceToCI/Attribute:ci_status' => 'CIステータス', // 'CI status', # 'CI status'
'Class:lnkServiceToCI/Attribute:ci_status+' => '', # ''
'Class:lnkServiceToCI' => 'サービス/CI',
'Class:lnkServiceToCI+' => '',
'Class:lnkServiceToCI/Attribute:service_id' => 'サービス',
'Class:lnkServiceToCI/Attribute:service_id+' => '',
'Class:lnkServiceToCI/Attribute:service_name' => 'サービス',
'Class:lnkServiceToCI/Attribute:service_name+' => '',
'Class:lnkServiceToCI/Attribute:ci_id' => 'CI',
'Class:lnkServiceToCI/Attribute:ci_id+' => '',
'Class:lnkServiceToCI/Attribute:ci_name' => 'CI',
'Class:lnkServiceToCI/Attribute:ci_name+' => '',
'Class:lnkServiceToCI/Attribute:ci_status' => 'CIの状態',
'Class:lnkServiceToCI/Attribute:ci_status+' => '',
));
?>

View File

@@ -43,46 +43,56 @@
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:Ticket' => 'チケット', // 'Ticket', # 'Ticket'
'Class:Ticket+' => '', # ''
'Class:Ticket/Attribute:ref' => '参照', // 'Ref', # 'Ref'
'Class:Ticket/Attribute:ref+' => '', # ''
'Class:Ticket/Attribute:title' => 'タイトル', // 'Title', # 'Title'
'Class:Ticket/Attribute:title+' => '', # ''
'Class:Ticket/Attribute:description' => '詳細記述', // 'Description', # 'Description'
'Class:Ticket/Attribute:description+' => '', # ''
'Class:Ticket/Attribute:ticket_log' => 'ログ', // 'Log', # 'Log'
'Class:Ticket' => 'チケット',
'Class:Ticket+' => '',
'Class:Ticket/Attribute:ref' => '参照',
'Class:Ticket/Attribute:ref+' => '',
'Class:Ticket/Attribute:title' => '題名',
'Class:Ticket/Attribute:title+' => '',
'Class:Ticket/Attribute:description' => '説明',
'Class:Ticket/Attribute:description+' => '',
'Class:Ticket/Attribute:ticket_log' => 'ログ',
'Class:Ticket/Attribute:ticket_log+' => '', # ''
'Class:Ticket/Attribute:start_date' => '開始済み', // 'Started', # 'Started'
'Class:Ticket/Attribute:start_date+' => '', # ''
'Class:Ticket/Attribute:document_list' => 'ドキュメント', // 'Documents', # 'Documents'
'Class:Ticket/Attribute:document_list+' => 'チケットに関連するドキュメント', // 'Documents related to the ticket', # 'Documents related to the ticket'
'Class:Ticket/Attribute:ci_list' => 'CI', // 'CIs', # 'CIs'
'Class:Ticket/Attribute:ci_list+' => 'インシデントに関連するCI', // 'CIs concerned by the incident', # 'CIs concerned by the incident'
'Class:Ticket/Attribute:contact_list' => 'コンタクト', // 'Contacts', # 'Contacts'
'Class:Ticket/Attribute:contact_list+' => '担当チーム、担当者', // 'Team and persons involved', # 'Team and persons involved'
'Class:Ticket/Attribute:incident_list' => '関連インシデント', // 'Related Incidents', # 'Related Incidents'
'Class:Ticket/Attribute:incident_list+' => '', # ''
'Class:Ticket/Attribute:finalclass' => 'タイプ', // 'Type', # 'Type'
'Class:Ticket/Attribute:finalclass+' => '', # ''
'Class:Ticket/Attribute:start_date' => '開始',
'Class:Ticket/Attribute:start_date+' => '',
'Class:Ticket/Attribute:document_list' => '文書',
'Class:Ticket/Attribute:document_list+' => 'このチケットに関連する文書',
'Class:Ticket/Attribute:ci_list' => 'CI',
'Class:Ticket/Attribute:ci_list+' => 'このインシデントに関連するCI',
'Class:Ticket/Attribute:contact_list' => '連絡先',
'Class:Ticket/Attribute:contact_list+' => '担当チーム、担当者',
'Class:Ticket/Attribute:incident_list' => '関連するインシデント',
'Class:Ticket/Attribute:incident_list+' => '',
'Class:Ticket/Attribute:finalclass' => 'タイプ',
'Class:Ticket/Attribute:finalclass+' => '',
));
// Fieldset translation
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Ticket:baseinfo' => '基本情報',
'Ticket:date' => '日付',
'Ticket:contact' => '連絡先',
'Ticket:moreinfo' => '追加情報',
'Ticket:relation' => '関連',
'Ticket:log' => 'コミュニケーション',
));
//
// Class: lnkTicketToDoc
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkTicketToDoc' => 'チケット/ドキュメント', // 'Ticket/Document', # 'Ticket/Document'
'Class:lnkTicketToDoc+' => '', # ''
'Class:lnkTicketToDoc/Attribute:ticket_id' => 'チケット', // 'Ticket', # 'Ticket'
'Class:lnkTicketToDoc/Attribute:ticket_id+' => '', # ''
'Class:lnkTicketToDoc/Attribute:ticket_ref' => 'チケット', // 'Ticket #', # 'Ticket #'
'Class:lnkTicketToDoc/Attribute:ticket_ref+' => '', # ''
'Class:lnkTicketToDoc/Attribute:document_id' => 'ドキュメント', // 'Document', # 'Document'
'Class:lnkTicketToDoc/Attribute:document_id+' => '', # ''
'Class:lnkTicketToDoc/Attribute:document_name' => 'ドキュメント', // 'Document', # 'Document'
'Class:lnkTicketToDoc/Attribute:document_name+' => '', # ''
'Class:lnkTicketToDoc' => 'チケット/文書',
'Class:lnkTicketToDoc+' => '',
'Class:lnkTicketToDoc/Attribute:ticket_id' => 'チケット',
'Class:lnkTicketToDoc/Attribute:ticket_id+' => '',
'Class:lnkTicketToDoc/Attribute:ticket_ref' => 'チケット',
'Class:lnkTicketToDoc/Attribute:ticket_ref+' => '',
'Class:lnkTicketToDoc/Attribute:document_id' => '文書',
'Class:lnkTicketToDoc/Attribute:document_id+' => '',
'Class:lnkTicketToDoc/Attribute:document_name' => '文書',
'Class:lnkTicketToDoc/Attribute:document_name+' => '',
));
//
@@ -90,20 +100,20 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkTicketToContact' => 'チケット/コンタクト', // 'Ticket/Contact', # 'Ticket/Contact'
'Class:lnkTicketToContact+' => '', # ''
'Class:lnkTicketToContact/Attribute:ticket_id' => 'チケット', // 'Ticket', # 'Ticket'
'Class:lnkTicketToContact/Attribute:ticket_id+' => '', # ''
'Class:lnkTicketToContact/Attribute:ticket_ref' => 'チケット', // 'Ticket #', # 'Ticket #'
'Class:lnkTicketToContact/Attribute:ticket_ref+' => '', # ''
'Class:lnkTicketToContact/Attribute:contact_id' => 'コンタクト', // 'Contact', # 'Contact'
'Class:lnkTicketToContact/Attribute:contact_id+' => '', # ''
'Class:lnkTicketToContact/Attribute:contact_name' => 'コンタクト', // 'Contact', # 'Contact'
'Class:lnkTicketToContact/Attribute:contact_name+' => '', # ''
'Class:lnkTicketToContact/Attribute:contact_email' => 'Eメール', // 'Email', # 'Email'
'Class:lnkTicketToContact/Attribute:contact_email+' => '', # ''
'Class:lnkTicketToContact/Attribute:role' => '役割', // 'Role', # 'Role'
'Class:lnkTicketToContact/Attribute:role+' => '', # ''
'Class:lnkTicketToContact' => 'チケット/連絡先',
'Class:lnkTicketToContact+' => '',
'Class:lnkTicketToContact/Attribute:ticket_id' => 'チケット',
'Class:lnkTicketToContact/Attribute:ticket_id+' => '',
'Class:lnkTicketToContact/Attribute:ticket_ref' => 'チケット',
'Class:lnkTicketToContact/Attribute:ticket_ref+' => '',
'Class:lnkTicketToContact/Attribute:contact_id' => '連絡先',
'Class:lnkTicketToContact/Attribute:contact_id+' => '',
'Class:lnkTicketToContact/Attribute:contact_name' => '連絡先',
'Class:lnkTicketToContact/Attribute:contact_name+' => '',
'Class:lnkTicketToContact/Attribute:contact_email' => 'Eメール',
'Class:lnkTicketToContact/Attribute:contact_email+' => '',
'Class:lnkTicketToContact/Attribute:role' => '役割',
'Class:lnkTicketToContact/Attribute:role+' => '',
));
//
@@ -111,20 +121,20 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:lnkTicketToCI' => 'チケット/CI', // 'Ticket/CI', # 'Ticket/CI'
'Class:lnkTicketToCI+' => '', # ''
'Class:lnkTicketToCI/Attribute:ticket_id' => 'チケット', // 'Ticket', # 'Ticket'
'Class:lnkTicketToCI/Attribute:ticket_id+' => '', # ''
'Class:lnkTicketToCI/Attribute:ticket_ref' => 'チケット', // 'Ticket #', # 'Ticket #'
'Class:lnkTicketToCI/Attribute:ticket_ref+' => '', # ''
'Class:lnkTicketToCI/Attribute:ci_id' => 'CI', # 'CI'
'Class:lnkTicketToCI/Attribute:ci_id+' => '', # ''
'Class:lnkTicketToCI/Attribute:ci_name' => 'CI', # 'CI'
'Class:lnkTicketToCI/Attribute:ci_name+' => '', # ''
'Class:lnkTicketToCI/Attribute:ci_status' => 'CIステータス', // 'CI status', # 'CI status'
'Class:lnkTicketToCI/Attribute:ci_status+' => '', # ''
'Class:lnkTicketToCI/Attribute:impact' => '影響', // 'Impact', # 'Impact'
'Class:lnkTicketToCI/Attribute:impact+' => '', # ''
'Class:lnkTicketToCI' => 'チケット/CI',
'Class:lnkTicketToCI+' => '',
'Class:lnkTicketToCI/Attribute:ticket_id' => 'チケット',
'Class:lnkTicketToCI/Attribute:ticket_id+' => '',
'Class:lnkTicketToCI/Attribute:ticket_ref' => 'チケット',
'Class:lnkTicketToCI/Attribute:ticket_ref+' => '',
'Class:lnkTicketToCI/Attribute:ci_id' => 'CI',
'Class:lnkTicketToCI/Attribute:ci_id+' => '',
'Class:lnkTicketToCI/Attribute:ci_name' => 'CI',
'Class:lnkTicketToCI/Attribute:ci_name+' => '',
'Class:lnkTicketToCI/Attribute:ci_status' => 'CIの状態',
'Class:lnkTicketToCI/Attribute:ci_status+' => '',
'Class:lnkTicketToCI/Attribute:impact' => 'インパクト',
'Class:lnkTicketToCI/Attribute:impact+' => '',
));
@@ -133,132 +143,135 @@ Dict::Add('JA JP', 'Japanese', '日本語', array (
//
Dict::Add('JA JP', 'Japanese', '日本語', array (
'Class:ResponseTicket' => 'レスポンスチケット', // 'ResponseTicket', # 'ResponseTicket'
'Class:ResponseTicket+' => '', # ''
'Class:ResponseTicket/Attribute:status' => 'ステータス', // 'Status', # 'Status'
'Class:ResponseTicket/Attribute:status+' => '', # ''
'Class:ResponseTicket/Attribute:status/Value:new' => '新規', # 'New'
'Class:ResponseTicket/Attribute:status/Value:new+' => '新規にオープン', // 'newly opened', # 'newly opened'
'Class:ResponseTicket/Attribute:status/Value:escalated_tto' => 'エスカレーション/TTO', // 'Escalation/TTO', # 'Escalation/TTO'
'Class:ResponseTicket/Attribute:status/Value:escalated_tto+' => '', # ''
'Class:ResponseTicket/Attribute:status/Value:assigned' => '割当済', # 'Assigned'
'Class:ResponseTicket/Attribute:status/Value:assigned+' => '', # ''
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr' => 'エスカレーション/TTR', // 'Escalation/TTR', # 'Escalation/TTR'
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr+' => '', # ''
'Class:ResponseTicket/Attribute:status/Value:frozen' => 'ペンディング', // 'Pending', # 'Pending'
'Class:ResponseTicket/Attribute:status/Value:frozen+' => '', # ''
'Class:ResponseTicket/Attribute:status/Value:resolved' => '解決済み', // 'Resolved', # 'Resolved'
'Class:ResponseTicket/Attribute:status/Value:resolved+' => '', # ''
'Class:ResponseTicket/Attribute:status/Value:closed' => '完了', # 'Closed'
'Class:ResponseTicket/Attribute:status/Value:closed+' => '', # ''
'Class:ResponseTicket/Attribute:caller_id' => '呼び出し', // 'Caller', # 'Caller'
'Class:ResponseTicket/Attribute:caller_id+' => '', # ''
'Class:ResponseTicket/Attribute:caller_email' => 'Eメール', // 'Email', # 'Email'
'Class:ResponseTicket/Attribute:caller_email+' => '', # ''
'Class:ResponseTicket/Attribute:org_id' => 'カスタマ', // 'Customer', # 'Customer'
'Class:ResponseTicket/Attribute:org_id+' => '', # ''
'Class:ResponseTicket/Attribute:org_name' => 'カスタマ', // 'Customer', # 'Customer'
'Class:ResponseTicket/Attribute:org_name+' => '', # ''
'Class:ResponseTicket/Attribute:service_id' => 'サービス', // 'Service', # 'Service'
'Class:ResponseTicket/Attribute:service_id+' => '', # ''
'Class:ResponseTicket/Attribute:service_name' => '名前', // 'Name', # 'Name'
'Class:ResponseTicket/Attribute:service_name+' => '', # ''
'Class:ResponseTicket/Attribute:servicesubcategory_id' => 'サービス要素', // 'Service element', # 'Service element'
'Class:ResponseTicket/Attribute:servicesubcategory_id+' => '', # ''
'Class:ResponseTicket/Attribute:servicesubcategory_name' => '名前', // 'Name', # 'Name'
'Class:ResponseTicket/Attribute:servicesubcategory_name+' => '', # ''
'Class:ResponseTicket/Attribute:product' => 'プロダクト', // 'Product', # 'Product'
'Class:ResponseTicket/Attribute:product+' => '', # ''
'Class:ResponseTicket/Attribute:impact' => '影響', // 'Impact', # 'Impact'
'Class:ResponseTicket/Attribute:impact+' => '', # ''
'Class:ResponseTicket/Attribute:impact/Value:1' => '部署', // 'A department', # 'A department'
'Class:ResponseTicket/Attribute:impact/Value:1+' => '', # ''
'Class:ResponseTicket/Attribute:impact/Value:2' => 'サービス', // 'A service', # 'A service'
'Class:ResponseTicket/Attribute:impact/Value:2+' => '', # ''
'Class:ResponseTicket/Attribute:impact/Value:3' => 'パーソン', // 'A person', # 'A person'
'Class:ResponseTicket/Attribute:impact/Value:3+' => '', # ''
'Class:ResponseTicket/Attribute:urgency' => '緊急', // 'Urgency', # 'Urgency'
'Class:ResponseTicket/Attribute:urgency+' => '', # ''
'Class:ResponseTicket/Attribute:urgency/Value:1' => '高', // 'High', # 'High'
'Class:ResponseTicket/Attribute:urgency/Value:1+' => '', # ''
'Class:ResponseTicket/Attribute:urgency/Value:2' => '中', // 'Medium', # 'Medium'
'Class:ResponseTicket/Attribute:urgency/Value:2+' => '', # ''
'Class:ResponseTicket/Attribute:urgency/Value:3' => '低', // 'Low', # 'Low'
'Class:ResponseTicket/Attribute:urgency/Value:3+' => '', # ''
'Class:ResponseTicket/Attribute:priority' => 'プライオリティ', // 'Priority', # 'Priority'
'Class:ResponseTicket/Attribute:priority+' => '', # ''
'Class:ResponseTicket/Attribute:priority/Value:1' => '高', // 'High', # 'High'
'Class:ResponseTicket/Attribute:priority/Value:1+' => '', # ''
'Class:ResponseTicket/Attribute:priority/Value:2' => '中', // 'Medium', # 'Medium'
'Class:ResponseTicket/Attribute:priority/Value:2+' => '', # ''
'Class:ResponseTicket/Attribute:priority/Value:3' => '低', // 'Low', # 'Low'
'Class:ResponseTicket/Attribute:priority/Value:3+' => '', # ''
'Class:ResponseTicket/Attribute:workgroup_id' => 'ワークグループ', // 'Workgroup', # 'Workgroup'
'Class:ResponseTicket/Attribute:workgroup_id+' => '', # ''
'Class:ResponseTicket/Attribute:workgroup_name' => 'ワークグループ', // 'Workgroup', # 'Workgroup'
'Class:ResponseTicket/Attribute:workgroup_name+' => '', # ''
'Class:ResponseTicket/Attribute:agent_id' => 'エージェント', // 'Agent', # 'Agent'
'Class:ResponseTicket/Attribute:agent_id+' => '', # ''
'Class:ResponseTicket/Attribute:agent_name' => 'エージェント', // 'Agent', # 'Agent'
'Class:ResponseTicket/Attribute:agent_name+' => '', # ''
'Class:ResponseTicket/Attribute:agent_email' => 'エージェントEメール', // 'Agent email', # 'Agent email'
'Class:ResponseTicket/Attribute:agent_email+' => '', # ''
'Class:ResponseTicket/Attribute:related_problem_id' => '関連プロブレム', // 'Related Problem', # 'Related Problem'
'Class:ResponseTicket/Attribute:related_problem_id+' => '', # ''
'Class:ResponseTicket/Attribute:related_problem_ref' => '参照', // 'Ref', # 'Ref'
'Class:ResponseTicket/Attribute:related_problem_ref+' => '', # ''
'Class:ResponseTicket/Attribute:related_change_id' => '関連する変更', // 'Related change', # 'Related change'
'Class:ResponseTicket/Attribute:related_change_id+' => '', # ''
'Class:ResponseTicket/Attribute:related_change_ref' => '関連する変更', // 'Related change', # 'Related change'
'Class:ResponseTicket/Attribute:related_change_ref+' => '', # ''
'Class:ResponseTicket/Attribute:close_date' => '完了', # 'Closed'
'Class:ResponseTicket/Attribute:close_date+' => '', # ''
'Class:ResponseTicket/Attribute:last_update' => '最終更新日', // 'Last update', # 'Last update'
'Class:ResponseTicket/Attribute:last_update+' => '', # ''
'Class:ResponseTicket/Attribute:assignment_date' => 'アサイン日付', // 'Assignment Date ', # 'Assignment Date '
'Class:ResponseTicket/Attribute:assignment_date+' => '', # ''
'Class:ResponseTicket/Attribute:resolution_date' => '解決日', // 'Resolution Date', # 'Resolution Date'
'Class:ResponseTicket/Attribute:resolution_date+' => '', # ''
'Class:ResponseTicket/Attribute:tto_escalation_deadline' => 'TTOエスカレーション締切り', // 'TTO Escalation deadline', # 'TTO Escalation deadline'
'Class:ResponseTicket/Attribute:tto_escalation_deadline+' => '', # ''
'Class:ResponseTicket/Attribute:ttr_escalation_deadline' => 'TTRエスカレーション締切り', // 'TTR Escalation deadline', # 'TTR Escalation deadline'
'Class:ResponseTicket/Attribute:ttr_escalation_deadline+' => '', # ''
'Class:ResponseTicket/Attribute:closure_deadline' => 'クローズ締切り', // 'Closure deadline', # 'Closure deadline'
'Class:ResponseTicket/Attribute:closure_deadline+' => '', # ''
'Class:ResponseTicket/Attribute:resolution_code' => '解決コード', // 'Resolution code', # 'Resolution code'
'Class:ResponseTicket/Attribute:resolution_code+' => '', # ''
'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce' => '再現できず', // 'Could not be reproduced', # 'Could not be reproduced'
'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce+' => '', # ''
'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate' => 'チケットを複製', // 'Duplicate ticket', # 'Duplicate ticket'
'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate+' => '', # ''
'Class:ResponseTicket/Attribute:resolution_code/Value:fixed' => '改修済み', // 'Fixed', # 'Fixed'
'Class:ResponseTicket/Attribute:resolution_code/Value:fixed+' => '', # ''
'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant' => '見当違い', // 'Irrelevant', # 'Irrelevant'
'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant+' => '', # ''
'Class:ResponseTicket/Attribute:solution' => '解決策', // 'Solution', # 'Solution'
'Class:ResponseTicket' => 'レスポンスチケット',
'Class:ResponseTicket+' => '',
'Class:ResponseTicket/Attribute:status' => '状態',
'Class:ResponseTicket/Attribute:status+' => '',
'Class:ResponseTicket/Attribute:status/Value:new' => '新規',
'Class:ResponseTicket/Attribute:status/Value:new+' => '新規にオープン',
'Class:ResponseTicket/Attribute:status/Value:escalated_tto' => 'エスカレーション/TTO',
'Class:ResponseTicket/Attribute:status/Value:escalated_tto+' => '',
'Class:ResponseTicket/Attribute:status/Value:assigned' => '割り当て済み',
'Class:ResponseTicket/Attribute:status/Value:assigned+' => '',
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr' => 'エスカレーション/TTR',
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr+' => '',
'Class:ResponseTicket/Attribute:status/Value:frozen' => '保留', // 'Pending',
'Class:ResponseTicket/Attribute:status/Value:frozen+' => '',
'Class:ResponseTicket/Attribute:status/Value:resolved' => '解決済み',
'Class:ResponseTicket/Attribute:status/Value:resolved+' => '',
'Class:ResponseTicket/Attribute:status/Value:closed' => 'クローズ',
'Class:ResponseTicket/Attribute:status/Value:closed+' => '',
'Class:ResponseTicket/Attribute:caller_id' => '連絡者', // 'caller',
'Class:ResponseTicket/Attribute:caller_id+' => '',
'Class:ResponseTicket/Attribute:caller_email' => 'Eメール',
'Class:ResponseTicket/Attribute:caller_email+' => '',
'Class:ResponseTicket/Attribute:org_id' => '顧客',
'Class:ResponseTicket/Attribute:org_id+' => '',
'Class:ResponseTicket/Attribute:org_name' => '顧客',
'Class:ResponseTicket/Attribute:org_name+' => '',
'Class:ResponseTicket/Attribute:service_id' => 'サービス',
'Class:ResponseTicket/Attribute:service_id+' => '',
'Class:ResponseTicket/Attribute:service_name' => '名前',
'Class:ResponseTicket/Attribute:service_name+' => '',
'Class:ResponseTicket/Attribute:servicesubcategory_id' => 'サービス要素', // 'Service element',
'Class:ResponseTicket/Attribute:servicesubcategory_id+' => '',
'Class:ResponseTicket/Attribute:servicesubcategory_name' => '名前',
'Class:ResponseTicket/Attribute:servicesubcategory_name+' => '',
'Class:ResponseTicket/Attribute:product' => '製品',
'Class:ResponseTicket/Attribute:product+' => '',
'Class:ResponseTicket/Attribute:impact' => 'インパクト',
'Class:ResponseTicket/Attribute:impact+' => '',
'Class:ResponseTicket/Attribute:impact/Value:1' => '部署',
'Class:ResponseTicket/Attribute:impact/Value:1+' => '',
'Class:ResponseTicket/Attribute:impact/Value:2' => 'サービス',
'Class:ResponseTicket/Attribute:impact/Value:2+' => '',
'Class:ResponseTicket/Attribute:impact/Value:3' => '',
'Class:ResponseTicket/Attribute:impact/Value:3+' => '',
'Class:ResponseTicket/Attribute:urgency' => '緊急',
'Class:ResponseTicket/Attribute:urgency+' => '',
'Class:ResponseTicket/Attribute:urgency/Value:1' => '高',
'Class:ResponseTicket/Attribute:urgency/Value:1+' => '',
'Class:ResponseTicket/Attribute:urgency/Value:2' => '中',
'Class:ResponseTicket/Attribute:urgency/Value:2+' => '',
'Class:ResponseTicket/Attribute:urgency/Value:3' => '低',
'Class:ResponseTicket/Attribute:urgency/Value:3+' => '',
'Class:ResponseTicket/Attribute:priority' => '優先度',
'Class:ResponseTicket/Attribute:priority+' => '',
'Class:ResponseTicket/Attribute:priority/Value:1' => '高',
'Class:ResponseTicket/Attribute:priority/Value:1+' => '',
'Class:ResponseTicket/Attribute:priority/Value:2' => '中',
'Class:ResponseTicket/Attribute:priority/Value:2+' => '',
'Class:ResponseTicket/Attribute:priority/Value:3' => '低',
'Class:ResponseTicket/Attribute:priority/Value:3+' => '',
'Class:ResponseTicket/Attribute:workgroup_id' => 'ワークグループ',
'Class:ResponseTicket/Attribute:workgroup_id+' => '',
'Class:ResponseTicket/Attribute:workgroup_name' => 'ワークグループ',
'Class:ResponseTicket/Attribute:workgroup_name+' => '',
'Class:ResponseTicket/Attribute:agent_id' => 'エージェント',
'Class:ResponseTicket/Attribute:agent_id+' => '',
'Class:ResponseTicket/Attribute:agent_name' => 'エージェント',
'Class:ResponseTicket/Attribute:agent_name+' => '',
'Class:ResponseTicket/Attribute:agent_email' => 'エージェントEメール',
'Class:ResponseTicket/Attribute:agent_email+' => '',
'Class:ResponseTicket/Attribute:related_problem_id' => '関連する問題',
'Class:ResponseTicket/Attribute:related_problem_id+' => '',
'Class:ResponseTicket/Attribute:related_problem_ref' => '参照',
'Class:ResponseTicket/Attribute:related_problem_ref+' => '',
'Class:ResponseTicket/Attribute:related_change_id' => '関連する変更',
'Class:ResponseTicket/Attribute:related_change_id+' => '',
'Class:ResponseTicket/Attribute:related_change_ref' => '関連する変更', // 'Related change',
'Class:ResponseTicket/Attribute:related_change_ref+' => '',
'Class:ResponseTicket/Attribute:close_date' => 'クローズ',
'Class:ResponseTicket/Attribute:close_date+' => '',
'Class:ResponseTicket/Attribute:last_update' => '最終更新日',
'Class:ResponseTicket/Attribute:last_update+' => '',
'Class:ResponseTicket/Attribute:assignment_date' => '割り当て日',
'Class:ResponseTicket/Attribute:assignment_date+' => '',
'Class:ResponseTicket/Attribute:resolution_date' => '解決日',
'Class:ResponseTicket/Attribute:resolution_date+' => '',
'Class:ResponseTicket/Attribute:tto_escalation_deadline' => 'TTOエスカレーション期限', // 'TTO Escalation deadline',
'Class:ResponseTicket/Attribute:tto_escalation_deadline+' => '',
'Class:ResponseTicket/Attribute:ttr_escalation_deadline' => 'TTRエスカレーション期限', // 'TTR Escalation deadline',
'Class:ResponseTicket/Attribute:ttr_escalation_deadline+' => '',
'Class:ResponseTicket/Attribute:closure_deadline' => 'クローズ期限', // 'Closure deadline',
'Class:ResponseTicket/Attribute:closure_deadline+' => '',
'Class:ResponseTicket/Attribute:resolution_code' => '解決コード',
'Class:ResponseTicket/Attribute:resolution_code+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce' => '再現出来ない',
'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate' => 'チケットを複製',
'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:fixed' => '改修済み',
'Class:ResponseTicket/Attribute:resolution_code/Value:fixed+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant' => '見当違い', // 'Irrelevant',
'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant+' => '',
'Class:ResponseTicket/Attribute:solution' => '解決策',
'Class:ResponseTicket/Attribute:solution+' => '', # ''
'Class:ResponseTicket/Attribute:user_satisfaction' => 'ユーザ満足度', // 'User satisfaction', # 'User satisfaction'
'Class:ResponseTicket/Attribute:user_satisfaction+' => '', # ''
'Class:ResponseTicket/Attribute:user_satisfaction/Value:1' => '大変満足である', // 'Very satisfied', # 'Very satisfied'
'Class:ResponseTicket/Attribute:user_satisfaction/Value:1+' => '大変満足である', // 'Very satisfied', # 'Very satisfied'
'Class:ResponseTicket/Attribute:user_satisfaction/Value:2' => '概ね満足である', // 'Fairly statisfied', # 'Fairly statisfied'
'Class:ResponseTicket/Attribute:user_satisfaction/Value:2+' => '概ね満足である', // 'Fairly statisfied', # 'Fairly statisfied'
'Class:ResponseTicket/Attribute:user_satisfaction/Value:3' => 'やや不満である', // 'Rather Dissatified', # 'Rather Dissatified'
'Class:ResponseTicket/Attribute:user_satisfaction/Value:3+' => 'やや不満である', // 'Rather Dissatified', # 'Rather Dissatified'
'Class:ResponseTicket/Attribute:user_satisfaction/Value:4' => '大変不満である', // 'Very Dissatisfied', # 'Very Dissatisfied'
'Class:ResponseTicket/Attribute:user_satisfaction/Value:4+' => '大変不満である', // 'Very Dissatisfied', # 'Very Dissatisfied'
'Class:ResponseTicket/Attribute:user_commment' => 'ユーザコメント', // 'User comment', # 'User comment'
'Class:ResponseTicket/Attribute:user_commment+' => '', # ''
'Class:ResponseTicket/Stimulus:ev_assign' => '割', # 'Assign'
'Class:ResponseTicket/Stimulus:ev_assign+' => '', # ''
'Class:ResponseTicket/Stimulus:ev_reassign' => '再割', # 'Reassign'
'Class:ResponseTicket/Stimulus:ev_reassign+' => '', # ''
'Class:ResponseTicket/Stimulus:ev_timeout' => 'エスカレーション', // 'Escalation', # 'Escalation'
'Class:ResponseTicket/Stimulus:ev_timeout+' => '', # ''
'Class:ResponseTicket/Stimulus:ev_resolve' => '解決済みとする', # 'Mark as resolved'
'Class:ResponseTicket/Stimulus:ev_resolve+' => '', # ''
'Class:ResponseTicket/Stimulus:ev_close' => '完了', # 'Close'
'Class:ResponseTicket/Stimulus:ev_close+' => '', # ''
'Class:ResponseTicket/Attribute:user_satisfaction' => 'ユーザ満足度',
'Class:ResponseTicket/Attribute:user_satisfaction+' => '',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:1' => '大変満足', // 'Very satisfied',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:1+' => '大変満足', // 'Very satisfied',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:2' => '満足', // 'Fairly statisfied',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:2+' => '満足', // 'Fairly statisfied',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:3' => '不満', // 'Rather Dissatified',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:3+' => '不満', // 'Rather Dissatified',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:4' => '大変不満', // 'Very Dissatisfied',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:4+' => '大変不満', // 'Very Dissatisfied',
'Class:ResponseTicket/Attribute:user_commment' => 'ユーザコメント',
'Class:ResponseTicket/Attribute:user_commment+' => '',
'Class:ResponseTicket/Stimulus:ev_assign' => '割り当て',
'Class:ResponseTicket/Stimulus:ev_assign+' => '',
'Class:ResponseTicket/Stimulus:ev_reassign' => '再割り当て',
'Class:ResponseTicket/Stimulus:ev_reassign+' => '',
'Class:ResponseTicket/Stimulus:ev_timeout' => 'ev_タイムアウト', // 'Escalation', 'ev_timeout',
'Class:ResponseTicket/Stimulus:ev_timeout+' => '',
'Class:ResponseTicket/Stimulus:ev_resolve' => '解決済み',
'Class:ResponseTicket/Stimulus:ev_resolve+' => '',
'Class:ResponseTicket/Stimulus:ev_close' => 'クローズ',
'Class:ResponseTicket/Stimulus:ev_close+' => '',
));
?>

View File

@@ -674,7 +674,7 @@ try
else
{
$oP->set_title(Dict::S('UI:SearchResultsPageTitle'));
$oP->p("<h1>".Dict::Format('UI:FullTextSearchTitle_Text', $sFullText)."</h1>");
$oP->p("<h1>".Dict::Format('UI:FullTextSearchTitle_Text', htmlentities($sFullText, ENT_QUOTES, 'UTF-8'))."</h1>");
$iCount = 0;
$iBlock = 0;
// Search in full text mode in all the classes
@@ -1737,13 +1737,13 @@ EOF
{
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
$aErrors[] = Dict::Format('UI:AttemptingToSetASlaveAttribute_Name', $oAttDef->GetLabel());
}
else
{
$oObj->Set($sAttCode, $paramValue);
unset($aExpectedAttributes[$sAttCode]);
}
}
}
$oObj->UpdateObjectFromPostedForm('', array_keys($aExpectedAttributes), $sTargetState);
if (count($aErrors) == 0)
{
if ($oObj->ApplyStimulus($sStimulus))
@@ -1980,13 +1980,13 @@ EOF
{
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
$aErrors[] = Dict::Format('UI:AttemptingToChangeASlaveAttribute_Name', $oAttDef->GetLabel());
unset($aExpectedAttributes[$sAttCode]);
}
else
{
$oObj->Set($sAttCode, $paramValue);
}
}
}
$oObj->UpdateObjectFromPostedForm('', array_keys($aExpectedAttributes), $sTargetState);
if (count($aErrors) == 0)
{
if ($oObj->ApplyStimulus($sStimulus))

View File

@@ -235,18 +235,21 @@ try
$sFilter = utils::ReadParam('sFilter', '', false, 'raw_data');
$sJson = utils::ReadParam('json', '', false, 'raw_data');
$sContains = utils::ReadParam('q', '', false, 'raw_data');
if (!empty($sJson))
if ($sContains !='')
{
$oWizardHelper = WizardHelper::FromJSON($sJson);
$oObj = $oWizardHelper->GetTargetObject();
if (!empty($sJson))
{
$oWizardHelper = WizardHelper::FromJSON($sJson);
$oObj = $oWizardHelper->GetTargetObject();
}
else
{
// Search form: no current object
$oObj = null;
}
$oWidget = new UIExtKeyWidget($sTargetClass, $iInputId);
$oWidget->AutoComplete($oPage, $sFilter, $oObj, $sContains);
}
else
{
// Search form: no current object
$oObj = null;
}
$oWidget = new UIExtKeyWidget($sTargetClass, $iInputId);
$oWidget->AutoComplete($oPage, $sFilter, $oObj, $sContains);
break;
// ui.extkeywidget

View File

@@ -158,6 +158,30 @@ try
switch($operation)
{
case 'csv':
// Big result sets cause long OQL that cannot be passed (serialized) as a GET parameter
// Therefore we don't use the standard "search_oql" operation of UI.php to display the CSV
$iCategory = utils::ReadParam('category', '');
$iRuleIndex = utils::ReadParam('rule', 0);
$oAuditCategory = MetaModel::GetObject('AuditCategory', $iCategory);
$oDefinitionFilter = DBObjectSearch::FromOQL($oAuditCategory->Get('definition_set'));
FilterByContext($oDefinitionFilter, $oAppContext);
$oDefinitionSet = new CMDBObjectSet($oDefinitionFilter);
$oFilter = GetRuleResultFilter($iRuleIndex, $oDefinitionFilter, $oAppContext);
$oErrorObjectSet = new CMDBObjectSet($oFilter);
$oAuditRule = MetaModel::GetObject('AuditRule', $iRuleIndex);
$oP->add('<div class="page_header"><h1>Audit Errors: <span class="hilite">'.$oAuditRule->Get('description').'</span></h1><img style="margin-top: -20px; margin-right: 10px; float: right;" src="../images/stop.png"/></div>');
$oP->p('<a href="./audit.php?'.$oAppContext->GetForLink().'">[Back to audit results]</a>');
$sBlockId = 'audit_errors';
$oP->p("<div id=\"$sBlockId\" style=\"clear:both\">\n");
$oBlock = DisplayBlock::FromObjectSet($oErrorObjectSet, 'csv');
$oBlock->Display($oP, 1);
$oP->p("</div>\n");
// Adjust the size of the Textarea containing the CSV to fit almost all the remaining space
$oP->add_ready_script(" $('#1>textarea').height(400);"); // adjust the size of the block
break;
case 'errors':
$iCategory = utils::ReadParam('category', '');
$iRuleIndex = utils::ReadParam('rule', 0);
@@ -175,7 +199,9 @@ try
$oP->p("<div id=\"$sBlockId\" style=\"clear:both\">\n");
$oBlock = DisplayBlock::FromObjectSet($oErrorObjectSet, 'list');
$oBlock->Display($oP, 1);
$oP->p("</div>\n");
$oP->p("</div>\n");
$sExportUrl = utils::GetAbsoluteUrlAppRoot()."pages/audit.php?operation=csv&category=".$oAuditCategory->GetKey()."&rule=".$oAuditRule->GetKey();
$oP->add_ready_script("$('a[href*=\"pages/UI.php?operation=search\"]').attr('href', '".$sExportUrl."')");
break;
case 'audit':
@@ -232,7 +258,7 @@ try
{
$aObjectsWithErrors[$aErrorRow['id']] = true;
}
$aRow['nb_errors'] = ($iErrorsCount == 0) ? '0' : "<a href=\"?operation=errors&category=".$oAuditCategory->GetKey()."&rule=".$oAuditRule->GetKey()."&".$oAppContext->GetForLink()."\">$iErrorsCount</a>";
$aRow['nb_errors'] = ($iErrorsCount == 0) ? '0' : "<a href=\"?operation=errors&category=".$oAuditCategory->GetKey()."&rule=".$oAuditRule->GetKey()."&".$oAppContext->GetForLink()."\">$iErrorsCount</a> <a href=\"?operation=csv&category=".$oAuditCategory->GetKey()."&rule=".$oAuditRule->GetKey()."&".$oAppContext->GetForLink()."\">(CSV)</a>";
$aRow['percent_ok'] = sprintf('%.2f', 100.0 * (($iCount - $iErrorsCount) / $iCount));
$aRow['class'] = GetReportColor($iCount, $iErrorsCount);
}

View File

@@ -1402,14 +1402,18 @@ $('#select_template_class').change( function() {
EOF
);
if (MetaModel::GetConfig()->Get('csv_import_history_display'))
{
$oPage->SetCurrentTabContainer('tabs1');
$oPage->SetCurrentTab(Dict::S('UI:History:BulkImports'));
BulkChange::DisplayImportHistory($oPage);
}
}
switch($iStep)
{
case 10:
// Case generated by BulkChange::DisplayImportHistory
$iChange = (int)utils::ReadParam('changeid', 0);
BulkChange::DisplayImportHistoryDetails($oPage, $iChange);
break;

View File

@@ -160,7 +160,7 @@ try
$oP->add("<form method=\"get\">\n");
$oP->add(Dict::S('UI:RunQuery:ExpressionToEvaluate')."<br/>\n");
$oP->add("<textarea cols=\"120\" rows=\"8\" name=\"expression\">$sExpression</textarea>\n");
$oP->add("<textarea cols=\"120\" rows=\"8\" name=\"expression\">".htmlentities($sExpression, ENT_QUOTES, 'UTF-8')."</textarea>\n");
if (count($aArgs) > 0)
{
@@ -186,7 +186,7 @@ try
$oP->p('');
$oP->StartCollapsibleSection(Dict::S('UI:RunQuery:MoreInfo'), false);
$oP->p(Dict::S('UI:RunQuery:DevelopedQuery').$oFilter->ToOQL());
$oP->p(Dict::S('UI:RunQuery:DevelopedQuery').htmlentities($oFilter->ToOQL(), ENT_QUOTES, 'UTF-8'));
$oP->p(Dict::S('UI:RunQuery:SerializedFilter').$oFilter->serialize());
$oP->EndCollapsibleSection();
}

View File

@@ -385,6 +385,10 @@ function DisplayClassDetails($oPage, $sClass, $sContext)
{
$sValue = Dict::Format('UI:Schema:ExternalKey_To',MakeClassHLink($oAttDef->GetTargetClass(), $sContext));
}
elseif ($oAttDef->IsLinkSet())
{
$sValue = MakeClassHLink($oAttDef->GetLinkedClass(), $sContext);
}
else
{
$sValue = $oAttDef->GetDescription();

View File

@@ -245,8 +245,9 @@ function RequestCreationForm($oP, $oUserOrg)
}
$aArgs = array('this' => $oRequest);
$aFieldsMap[$sAttCode] = 'attr_'.$sAttCode;
$sValue = $oRequest->GetFormElementForField($oP, get_class($oRequest), $sAttCode, $oAttDef, $value, '', 'attr_'.$sAttCode, '', $iFlags, $aArgs);
$sInputId = 'attr_'.$sAttCode;
$aFieldsMap[$sAttCode] = $sInputId;
$sValue = "<span id=\"field_{$sInputId}\">".$oRequest->GetFormElementForField($oP, get_class($oRequest), $sAttCode, $oAttDef, $value, '', 'attr_'.$sAttCode, '', $iFlags, $aArgs).'</span>';
$aDetails[] = array('label' => '<span>'.$oAttDef->GetLabel().'</span>', 'value' => $sValue);
}
if (!class_exists('AttachmentPlugIn'))
@@ -289,7 +290,7 @@ function RequestCreationForm($oP, $oUserOrg)
$oP->add("</div>\n");
$iFieldsCount = count($aFieldsMap);
$sJsonFieldsMap = json_encode($aFieldsMap);
$oP->add_ready_script(
$oP->add_script(
<<<EOF
// Create the object once at the beginning of the page... no state specified => new
var oWizardHelper = new WizardHelper('UserRequest', '');

View File

@@ -74,7 +74,7 @@ Deng Lixin for the Chinese translation
Marialaura Colantoni for the Italian translation
Schlobinux for the fix of the setup temporary file verification.
Gabor Kiss for the Hungarian translation
Tadashi Kaneda for the Japanese translation
Tadashi Kaneda and Shoji Seki for the Japanese translation
Antoine Coetsier for the CAS support and tests
Vincenzo Todisco for his contribution to the enhancement of the webservices
Tobias Glemser and Sabri Saleh for their consulting about iTop security

View File

@@ -54,7 +54,8 @@ class SynchroDataSource extends cmdbAbstractObject
MetaModel::Init_AddAttribute(new AttributeExternalKey("user_id", array("targetclass"=>"User", "jointype"=>null, "allowed_values"=>null, "sql"=>"user_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("notify_contact_id", array("targetclass"=>"Contact", "jointype"=>null, "allowed_values"=>null, "sql"=>"notify_contact_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeClass("scope_class", array("class_category"=>"bizmodel,addon/authentication", "more_values"=>"", "sql"=>"scope_class", "default_value"=>null, "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("database_table_name", array("allowed_values"=>null, "sql"=>"database_table_name", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array(), "validation_pattern" => "^[A-Za-z0-9_]*$")));
// Declared here for a future usage, but ignored so far
MetaModel::Init_AddAttribute(new AttributeString("scope_restriction", array("allowed_values"=>null, "sql"=>"scope_restriction", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
@@ -86,7 +87,7 @@ class SynchroDataSource extends cmdbAbstractObject
// Display lists
MetaModel::Init_SetZListItems('details', array(
'col:0'=> array(
'fieldset:SynchroDataSource:Description' => array('name','description','status','scope_class','user_id','notify_contact_id','url_icon','url_application')),
'fieldset:SynchroDataSource:Description' => array('name','description','status','scope_class','user_id','notify_contact_id','url_icon','url_application', 'database_table_name')),
'col:1'=> array(
'fieldset:SynchroDataSource:Reconciliation' => array('reconciliation_policy','action_on_zero','action_on_one','action_on_multiple'),
'fieldset:SynchroDataSource:Deletion' => array('user_delete_policy','full_load_periodicity','delete_policy','delete_policy_update','delete_policy_retention'))
@@ -98,6 +99,15 @@ class SynchroDataSource extends cmdbAbstractObject
// MetaModel::Init_SetZListItems('advanced_search', array('name')); // Criteria of the advanced search form
}
public function DisplayBareProperties(WebPage $oPage, $bEditMode = false, $sPrefix = '', $aExtraParams = array())
{
if (!$this->IsNew())
{
$this->Set('database_table_name', $this->GetDataTable());
}
parent::DisplayBareProperties($oPage, $bEditMode, $sPrefix, $aExtraParams);
}
public function DisplayBareRelations(WebPage $oPage, $bEditMode = false)
{
if (!$this->IsNew())
@@ -476,7 +486,7 @@ EOF
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
if (($sAttCode == 'scope_class') && (!$this->IsNew()))
if ( (($sAttCode == 'scope_class') || ($sAttCode == 'database_table_name')) && (!$this->IsNew()))
{
return OPT_ATT_READONLY;
}
@@ -574,6 +584,13 @@ EOF
if ($this->IsNew())
{
// Compute the database_table_name
$sDataTable = $this->Get('database_table_name');
if (!empty($sDataTable))
{
$this->Set('database_table_name', $this->ComputeDataTableName());
}
// When inserting a new datasource object, also create the SynchroAttribute objects
// for each field of the target class
// Create all the SynchroAttribute records
@@ -659,6 +676,17 @@ EOF
{
$this->m_aCheckIssues[] = Dict::Format('Class:SynchroDataSource/Error:DeletePolicyUpdateMustBeSpecified');
}
// When creating the data source with a specified database_table_name, this table must NOT exist
if ($this->IsNew())
{
$sDataTable = $this->GetDataTable();
if (!empty($sDataTable) && CMDBSource::IsTable($this->GetDataTable()))
{
// Hmm, the synchro_data_xxx table already exists !!
$this->m_aCheckIssues[] = Dict::Format('Class:SynchroDataSource/Error:DataTableAlreadyExists', $this->GetDataTable());
}
}
}
public function GetTargetClass()
@@ -668,12 +696,34 @@ EOF
public function GetDataTable()
{
$sName = strtolower($this->GetTargetClass());
$sName = str_replace('\'"&@|\\/ ', '_', $sName); // Remove forbidden characters from the table name
$sName .= '_'.$this->GetKey(); // Add a suffix for unicity
$sTable = MetaModel::GetConfig()->GetDBSubName()."synchro_data_$sName"; // Add the prefix if any
$sTable = $this->Get('database_table_name');
if (empty($sTable))
{
$sTable = $this->ComputeDataTableName();
}
return $sTable;
}
protected function ComputeDataTableName()
{
$sDBTableName = $this->Get('database_table_name');
if (empty($sDBTableName))
{
$sDBTableName = strtolower($this->GetTargetClass());
$sDBTableName = preg_replace('/[^A-za-z0-9_]/', '_', $sDBTableName); // Remove forbidden characters from the table name
$sDBTableName .= '_'.$this->GetKey(); // Add a suffix for unicity
}
else
{
$sDBTableName = preg_replace('/[^A-za-z0-9_]/', '_', $sDBTableName); // Remove forbidden characters from the table name
}
$sPrefix = MetaModel::GetConfig()->GetDBSubName()."synchro_data_";
if (strpos($sDBTableName, $sPrefix) !== 0)
{
$sDBTableName = $sPrefix.$sDBTableName;
}
return $sDBTableName;
}
/**
* When the new datasource has been created, let's create the synchro_data table
@@ -1168,6 +1218,7 @@ class SynchroAttLinkSet extends SynchroAttribute
MetaModel::Init_Params($aParams);
MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeString("row_separator", array("allowed_values"=>null, "sql"=>"row_separator", "default_value"=>'|', "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("attribute_separator", array("allowed_values"=>null, "sql"=>"attribute_separator", "default_value"=>';', "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("value_separator", array("allowed_values"=>null, "sql"=>"value_separator", "default_value"=>':', "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("attribute_qualifier", array("allowed_values"=>null, "sql"=>"attribute_qualifier", "default_value"=>'\'', "is_null_allowed"=>true, "depends_on"=>array())));
@@ -1460,11 +1511,15 @@ class SynchroReplica extends DBObject implements iDisplay
if (!MetaModel::DBIsReadOnly())
{
$oDataSource = MetaModel::GetObject('SynchroDataSource', $this->Get('sync_source_id'));
$sTable = $oDataSource->GetDataTable();
$oDataSource = MetaModel::GetObject('SynchroDataSource', $this->Get('sync_source_id'), false);
if ($oDataSource)
{
$sTable = $oDataSource->GetDataTable();
$sSQL = "DELETE FROM `$sTable` WHERE id = '{$this->GetKey()}'";
CMDBSource::Query($sSQL);
$sSQL = "DELETE FROM `$sTable` WHERE id = '{$this->GetKey()}'";
CMDBSource::Query($sSQL);
}
// else the whole datasource has probably been already deleted
}
$this->AfterDelete();
@@ -1686,8 +1741,21 @@ class SynchroReplica extends DBObject implements iDisplay
$value = $this->GetValueFromExtData($sAttCode, $oSyncAtt, $oStatLog);
if (!is_null($value))
{
$oDestObj->Set($sAttCode, $value);
$aValueTrace[] = "$sAttCode: $value";
if ($oSyncAtt->Get('update_policy') == 'write_if_empty')
{
$oAttDef = MetaModel::GetAttributeDef(get_class($oDestObj), $sAttCode);
if ($oAttDef->IsNull($oDestObj->Get($sAttCode)))
{
// The value is still "empty" in the target object, we are allowed to write the new value
$oDestObj->Set($sAttCode, $value);
$aValueTrace[] = "$sAttCode: $value";
}
}
else
{
$oDestObj->Set($sAttCode, $value);
$aValueTrace[] = "$sAttCode: $value";
}
}
}
// Really modified ?
@@ -2669,4 +2737,4 @@ class SynchroExecution
new OQLMenuNode('DataSources', 'SELECT SynchroDataSource', $oAdminMenu->GetIndex(), 12 /* fRank */, true, 'SynchroDataSource', UR_ACTION_MODIFY, UR_ALLOWED_YES);
// new OQLMenuNode('Replicas', 'SELECT SynchroReplica', $oAdminMenu->GetIndex(), 12 /* fRank */, true, 'SynchroReplica', UR_ACTION_MODIFY, UR_ALLOWED_YES);
// new WebPageMenuNode('Test:RunSynchro', '../synchro/synchro_exec.php', $oAdminMenu->GetIndex(), 13 /* fRank */, 'SynchroDataSource');
?>
?>

View File

@@ -140,6 +140,8 @@ class TestOQLParser extends TestFunction
$aQueries = array(
'SELECT toto' => true,
'SELECT toto WHERE toto.a = 1' => true,
'SELECT toto WHERE toto.a = 0xC' => true,
'SELECT toto WHERE toto.a = \'AXDVFS0xCZ32\'' => true,
'SELECT toto WHERE toto.a = :myparameter' => true,
'SELECT toto WHERE toto.a IN (:param1)' => true,
'SELECT toto WHERE toto.a IN (:param1, :param2)' => true,

View File

@@ -283,12 +283,26 @@ abstract class WebServicesBase
$oLog->Set('userinfo', UserRights::GetUser());
$oLog->Set('verb', $sVerb);
$oLog->Set('result', $oRes->IsOk());
$oLog->Set('log_info', $oRes->GetInfoAsText());
$oLog->Set('log_warning', $oRes->GetWarningsAsText());
$oLog->Set('log_error', $oRes->GetErrorsAsText());
$oLog->Set('data', $oRes->GetReturnedDataAsText());
$this->TrimAndSetValue($oLog, 'log_info', $oRes->GetInfoAsText());
$this->TrimAndSetValue($oLog, 'log_warning', $oRes->GetWarningsAsText());
$this->TrimAndSetValue($oLog, 'log_error', $oRes->GetErrorsAsText());
$this->TrimAndSetValue($oLog, 'data', $oRes->GetReturnedDataAsText());
$oLog->DBInsertNoReload();
}
protected function TrimAndSetValue($oLog, $sAttCode, $sValue)
{
$oAttDef = MetaModel::GetAttributeDef(get_class($oLog), $sAttCode);
if (is_object($oAttDef))
{
$iMaxSize = $oAttDef->GetMaxSize();
if ($iMaxSize)
{
$sValue = substr($sValue, 0, $iMaxSize);
}
$oLog->Set($sAttCode, $sValue);
}
}
/**
* Helper to set a scalar attribute