mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-15 08:24:10 +01:00
Compare commits
53 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ccbd818d13 | ||
|
|
1a92a7b4f3 | ||
|
|
4338bce526 | ||
|
|
4572bdbb02 | ||
|
|
fcd72fed82 | ||
|
|
1800120762 | ||
|
|
e5f0460703 | ||
|
|
72dbb9cb8f | ||
|
|
562cfde587 | ||
|
|
6fe25d8b57 | ||
|
|
248cdcea8c | ||
|
|
0b95b3799e | ||
|
|
05a2443afe | ||
|
|
1860521e74 | ||
|
|
8d39ddded6 | ||
|
|
fd3317e99e | ||
|
|
7651aaed81 | ||
|
|
a5d2d067ff | ||
|
|
b27fda4cf5 | ||
|
|
2834c073cd | ||
|
|
97f36bd7e8 | ||
|
|
3d299f015b | ||
|
|
8a5ed95c80 | ||
|
|
f4b29d152b | ||
|
|
463bc0873b | ||
|
|
368ea1cfdb | ||
|
|
1b618ff57c | ||
|
|
70149af5d6 | ||
|
|
006453678b | ||
|
|
135353aa76 | ||
|
|
ddd52554f1 | ||
|
|
22cf8e4986 | ||
|
|
931075687a | ||
|
|
adaf3a376c | ||
|
|
1808e5fe65 | ||
|
|
cab0eb7758 | ||
|
|
7e06dd100a | ||
|
|
f145b872de | ||
|
|
b66e489ec8 | ||
|
|
63da528882 | ||
|
|
ff80b06ea2 | ||
|
|
e9304bbcfa | ||
|
|
0c34b47aac | ||
|
|
484d4d1679 | ||
|
|
4b5a25ea59 | ||
|
|
7153162696 | ||
|
|
fb59939d57 | ||
|
|
629a87c99b | ||
|
|
3d4e0da019 | ||
|
|
1e1e10aa00 | ||
|
|
0fff433e90 | ||
|
|
05dbcb0a8b | ||
|
|
bc6a3ab485 |
@@ -57,19 +57,52 @@ class ApplicationContext
|
||||
if (empty(self::$aDefaultValues))
|
||||
{
|
||||
self::$aDefaultValues = array();
|
||||
$aContext = utils::ReadParam('c', array());
|
||||
foreach($this->aNames as $sName)
|
||||
{
|
||||
$sValue = utils::ReadParam($sName, '');
|
||||
$sValue = isset($aContext[$sName]) ? $aContext[$sName] : '';
|
||||
// TO DO: check if some of the context parameters are mandatory (or have default values)
|
||||
if (!empty($sValue))
|
||||
{
|
||||
self::$aDefaultValues[$sName] = $sValue;
|
||||
}
|
||||
// Hmm, there must be a better (more generic) way to handle the case below:
|
||||
// When there is only one possible (allowed) organization, the context must be
|
||||
// fixed to this org
|
||||
if ($sName == 'org_id')
|
||||
{
|
||||
if (MetaModel::IsValidClass('Organization'))
|
||||
{
|
||||
$oSearchFilter = new DBObjectSearch('Organization');
|
||||
$oSet = new CMDBObjectSet($oSearchFilter);
|
||||
$iCount = $oSet->Count();
|
||||
if ($iCount == 1)
|
||||
{
|
||||
// Only one possible value for org_id, set it in the context
|
||||
$oOrg = $oSet->Fetch();
|
||||
self::$aDefaultValues[$sName] = $oOrg->GetKey();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->aValues = self::$aDefaultValues;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current value for the given parameter
|
||||
* @param string $sParamName Name of the parameter to read
|
||||
* @return mixed The value for this parameter
|
||||
*/
|
||||
public function GetCurrentValue($sParamName, $defaultValue = '')
|
||||
{
|
||||
if (isset($this->aValues[$sParamName]))
|
||||
{
|
||||
return $this->aValues[$sParamName];
|
||||
}
|
||||
return $defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the context as string with the format name1=value1&name2=value2....
|
||||
* return string The context as a string to be appended to an href property
|
||||
@@ -79,7 +112,7 @@ class ApplicationContext
|
||||
$aParams = array();
|
||||
foreach($this->aValues as $sName => $sValue)
|
||||
{
|
||||
$aParams[] = $sName.'='.urlencode($sValue);
|
||||
$aParams[] = "c[$sName]".'='.urlencode($sValue);
|
||||
}
|
||||
return implode("&", $aParams);
|
||||
}
|
||||
@@ -93,7 +126,7 @@ class ApplicationContext
|
||||
$sContext = "";
|
||||
foreach($this->aValues as $sName => $sValue)
|
||||
{
|
||||
$sContext .= "<input type=\"hidden\" name=\"$sName\" value=\"$sValue\" />\n";
|
||||
$sContext .= "<input type=\"hidden\" name=\"c[$sName]\" value=\"$sValue\" />\n";
|
||||
}
|
||||
return $sContext;
|
||||
}
|
||||
@@ -104,7 +137,12 @@ class ApplicationContext
|
||||
*/
|
||||
public function GetAsHash()
|
||||
{
|
||||
return $this->aValues;
|
||||
$aReturn = array();
|
||||
foreach($this->aValues as $sName => $sValue)
|
||||
{
|
||||
$aReturn["c[$sName]"] = $sValue;
|
||||
}
|
||||
return $aReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
83
application/clipage.class.inc.php
Normal file
83
application/clipage.class.inc.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* CLI page
|
||||
* The page adds the content-type text/XML and the encoding into the headers
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once("../application/webpage.class.inc.php");
|
||||
|
||||
class CLIPage
|
||||
{
|
||||
function __construct($s_title)
|
||||
{
|
||||
}
|
||||
|
||||
public function output()
|
||||
{
|
||||
}
|
||||
|
||||
public function add($sText)
|
||||
{
|
||||
echo $sText;
|
||||
}
|
||||
|
||||
public function p($sText)
|
||||
{
|
||||
echo $sText."\n";
|
||||
}
|
||||
|
||||
public function add_comment($sText)
|
||||
{
|
||||
echo "#".$sText."\n";
|
||||
}
|
||||
|
||||
public function table($aConfig, $aData, $aParams = array())
|
||||
{
|
||||
$aCells = array();
|
||||
foreach($aConfig as $sName=>$aDef)
|
||||
{
|
||||
if (strlen($aDef['description']) > 0)
|
||||
{
|
||||
$aCells[] = $aDef['label'].' ('.$aDef['description'].')';
|
||||
}
|
||||
else
|
||||
{
|
||||
$aCells[] = $aDef['label'];
|
||||
}
|
||||
}
|
||||
echo implode(';', $aCells)."\n";
|
||||
|
||||
foreach($aData as $aRow)
|
||||
{
|
||||
$aCells = array();
|
||||
foreach($aConfig as $sName=>$aAttribs)
|
||||
{
|
||||
$sValue = $aRow["$sName"];
|
||||
$aCells[] = $sValue;
|
||||
}
|
||||
echo implode(';', $aCells)."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -299,24 +299,31 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
$oPage->add('<table style="vertical-align:top"><tr>');
|
||||
foreach($aCols as $sColIndex => $aFieldsets)
|
||||
{
|
||||
$aDetails[$sTab][$sColIndex] = array();
|
||||
$oPage->add('<td style="vertical-align:top">');
|
||||
//$aDetails[$sTab][$sColIndex] = array();
|
||||
foreach($aFieldsets as $sFieldsetName => $aFields)
|
||||
{
|
||||
//if ($sFieldsetName == '')
|
||||
//{
|
||||
foreach($aFields as $sAttCode)
|
||||
$aDetails[$sTab][$sColIndex] = array();
|
||||
if (!empty($sFieldsetName))
|
||||
{
|
||||
$oPage->add('<fieldset>');
|
||||
$oPage->add('<legend>'.Dict::S($sFieldsetName).'</legend>');
|
||||
}
|
||||
foreach($aFields as $sAttCode)
|
||||
{
|
||||
$val = $this->GetFieldAsHtml($sClass, $sAttCode, $sStateAttCode);
|
||||
if ($val != null)
|
||||
{
|
||||
$val = $this->GetFieldAsHtml($sClass, $sAttCode, $sStateAttCode);
|
||||
if ($val != null)
|
||||
{
|
||||
// The field is visible, add it to the current column
|
||||
$aDetails[$sTab][$sColIndex][] = $val;
|
||||
}
|
||||
}
|
||||
//}
|
||||
// The field is visible, add it to the current column
|
||||
$aDetails[$sTab][$sColIndex][] = $val;
|
||||
}
|
||||
}
|
||||
$oPage->Details($aDetails[$sTab][$sColIndex]);
|
||||
if (!empty($sFieldsetName))
|
||||
{
|
||||
$oPage->add('</fieldset>');
|
||||
}
|
||||
}
|
||||
$oPage->add('<td style="vertical-align:top">');
|
||||
$oPage->Details($aDetails[$sTab][$sColIndex]);
|
||||
$oPage->add('</td>');
|
||||
}
|
||||
$oPage->add('</tr></table>');
|
||||
@@ -459,7 +466,7 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
{
|
||||
if (!$bSingleSelectMode)
|
||||
{
|
||||
$aAttribs['form::select'] = array('label' => "<input type=\"checkbox\" onChange=\"var value = this.checked; $('.selectList{$iListId}').each( function() { this.checked = value; } );\"></input>", 'description' => Dict::S('UI:SelectAllToggle+'));
|
||||
$aAttribs['form::select'] = array('label' => "<input type=\"checkbox\" onClick=\"CheckAll('.selectList{$iListId}', this.checked);\"></input>", 'description' => Dict::S('UI:SelectAllToggle+'));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -743,9 +750,15 @@ EOF
|
||||
$aHeader[] = 'id';
|
||||
foreach($aList[$sClassName] as $sAttCode => $oAttDef)
|
||||
{
|
||||
$sStar = '';
|
||||
if ($oAttDef->IsExternalField())
|
||||
{
|
||||
$sExtKeyLabel = MetaModel::GetLabel($sClassName, $oAttDef->GetKeyAttCode());
|
||||
$oExtKeyAttDef = MetaModel::GetAttributeDef($sClassName, $oAttDef->GetKeyAttCode());
|
||||
if (!$oExtKeyAttDef->IsNullAllowed() && isset($aParams['showMandatoryFields']))
|
||||
{
|
||||
$sStar = '*';
|
||||
}
|
||||
$sRemoteAttLabel = MetaModel::GetLabel($oAttDef->GetTargetClass(), $oAttDef->GetExtAttCode());
|
||||
$oTargetAttDef = MetaModel::GetAttributeDef($oAttDef->GetTargetClass(), $oAttDef->GetExtAttCode());
|
||||
$sSuffix = '';
|
||||
@@ -754,11 +767,15 @@ EOF
|
||||
$sSuffix = '->id';
|
||||
}
|
||||
|
||||
$aHeader[] = $sExtKeyLabel.'->'.$sRemoteAttLabel.$sSuffix;
|
||||
$aHeader[] = $sExtKeyLabel.'->'.$sRemoteAttLabel.$sSuffix.$sStar;
|
||||
}
|
||||
else
|
||||
{
|
||||
$aHeader[] = MetaModel::GetLabel($sClassName, $sAttCode);
|
||||
if (!$oAttDef->IsNullAllowed() && isset($aParams['showMandatoryFields']))
|
||||
{
|
||||
$sStar = '*';
|
||||
}
|
||||
$aHeader[] = MetaModel::GetLabel($sClassName, $sAttCode).$sStar;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -882,14 +899,15 @@ EOF
|
||||
}
|
||||
$aOptions[MetaModel::GetName($sClassName)] = "<option selected value=\"$sClassName\">".MetaModel::GetName($sClassName)."</options>\n";
|
||||
ksort($aOptions);
|
||||
$sClassesCombo = "<select name=\"class\" onChange=\"ReloadSearchForm('$sSearchFormId', this.value, '$sRootClass')\">\n".implode('', $aOptions)."</select>\n";
|
||||
$sContext = $oAppContext->GetForLink();
|
||||
$sClassesCombo = "<select name=\"class\" onChange=\"ReloadSearchForm('$sSearchFormId', this.value, '$sRootClass', '$sContext')\">\n".implode('', $aOptions)."</select>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$sClassesCombo = MetaModel::GetName($sClassName);
|
||||
}
|
||||
$oUnlimitedFilter = new DBObjectSearch($sClassName);
|
||||
$sHtml .= "<form id=\"form{$iSearchFormId}\">\n";
|
||||
$sHtml .= "<form id=\"form{$iSearchFormId}\" action=\"../pages/UI.php\">\n"; // Don't use $_SERVER['SCRIPT_NAME'] since the form may be called asynchronously (from ajax.php)
|
||||
$sHtml .= "<h2>".Dict::Format('UI:SearchFor_Class_Objects', $sClassesCombo)."</h2>\n";
|
||||
$index = 0;
|
||||
$sHtml .= "<p>\n";
|
||||
@@ -902,7 +920,7 @@ EOF
|
||||
$aList = MetaModel::GetZListItems($sClassName, 'standard_search');
|
||||
foreach($aList as $sFilterCode)
|
||||
{
|
||||
$oAppContext->Reset($sFilterCode); // Make sure the same parameter will not be passed twice
|
||||
//$oAppContext->Reset($sFilterCode); // Make sure the same parameter will not be passed twice
|
||||
$sHtml .= '<span style="white-space: nowrap;padding:5px;display:inline-block;">';
|
||||
$sFilterValue = '';
|
||||
$sFilterValue = utils::ReadParam($sFilterCode, '');
|
||||
@@ -946,11 +964,13 @@ EOF
|
||||
}
|
||||
$sValue .= "</select>\n";
|
||||
$sHtml .= "<label>".MetaModel::GetFilterLabel($sClassName, $sFilterCode).":</label> $sValue\n";
|
||||
unset($aExtraParams[$sFilterCode]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Any value is possible, display an input box
|
||||
$sHtml .= "<label>".MetaModel::GetFilterLabel($sClassName, $sFilterCode).":</label> <input class=\"textSearch\" name=\"$sFilterCode\" value=\"$sFilterValue\"/>\n";
|
||||
unset($aExtraParams[$sFilterCode]);
|
||||
}
|
||||
$index++;
|
||||
$sHtml .= '</span> ';
|
||||
@@ -970,7 +990,7 @@ EOF
|
||||
{
|
||||
$sHtml .= "</div><!-- Simple search form -->\n";
|
||||
}
|
||||
|
||||
/*
|
||||
// OQL query builder
|
||||
$sHtml .= "<div id=\"OQLQuery{$iSearchFormId}\" style=\"display:none\" class=\"mini_tab{$iSearchFormId}\">\n";
|
||||
$sHtml .= "<h1>".Dict::S('UI:OQLQueryBuilderTitle')."</h1>\n";
|
||||
@@ -997,6 +1017,7 @@ EOF
|
||||
$sHtml .= $oAppContext->GetForForm();
|
||||
$sHtml .= "</table></form>\n";
|
||||
$sHtml .= "</div><!-- OQL query form -->\n";
|
||||
*/
|
||||
return $sHtml;
|
||||
}
|
||||
|
||||
@@ -1057,7 +1078,7 @@ EOF
|
||||
|
||||
case 'LinkedSet':
|
||||
$aEventsList[] ='change';
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iId, $sNameSuffix);
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iId, $sNameSuffix, $oAttDef->DuplicatesAllowed());
|
||||
$sHTMLValue = $oWidget->Display($oPage, $value);
|
||||
break;
|
||||
|
||||
@@ -1105,9 +1126,9 @@ EOF
|
||||
$sHTMLValue = "<input count=\"".count($aAllowedValues)."\" type=\"text\" id=\"label_$iId\" size=\"30\" maxlength=\"$iFieldSize\" value=\"$sDisplayValue\"/> {$sValidationField}";
|
||||
// another hidden input to store & pass the object's Id
|
||||
$sHTMLValue .= "<input type=\"hidden\" id=\"$iId\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" value=\"$value\" />\n";
|
||||
$oPage->add_ready_script("\$('#label_$iId').autocomplete('./ajax.render.php', { scroll:true, minChars:3, onItemSelect:selectItem, onFindValue:findValue, formatItem:formatItem, autoFill:true, keyHolder:'#$iId', extraParams:{operation:'autocomplete', sclass:'$sClass',attCode:'".$sAttCode."'}});");
|
||||
$oPage->add_ready_script("\$('#label_$iId').autocomplete('./ajax.render.php', { scroll:true, minChars:3, formatItem:formatItem, autoFill:true, keyHolder:'#$iId', extraParams:{operation:'autocomplete', sclass:'$sClass',attCode:'".$sAttCode."'}});");
|
||||
$oPage->add_ready_script("\$('#label_$iId').blur(function() { $(this).search(); } );");
|
||||
$oPage->add_ready_script("\$('#label_$iId').result( function(event, data, formatted) { if (data) { $('#{$iId}').val(data[1]); $('#{$iId}').trigger('change'); } else { $('#{$iId}').val(''); $('#{$iId}').trigger('change');} } );");
|
||||
$oPage->add_ready_script("\$('#label_$iId').result( function(event, data, formatted) { OnAutoComplete('$iId', event, data, formatted); } );");
|
||||
$aEventsList[] ='change';
|
||||
}
|
||||
else
|
||||
@@ -1115,7 +1136,7 @@ EOF
|
||||
// Few choices, use a normal 'select'
|
||||
// In case there are no valid values, the select will be empty, thus blocking the user from validating the form
|
||||
$sHTMLValue = "<select title=\"$sHelpText\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" id=\"$iId\">\n";
|
||||
$sHTMLValue .= "<option value=\"0\">".Dict::S('UI:SelectOne')."</option>\n";
|
||||
$sHTMLValue .= "<option value=\"\">".Dict::S('UI:SelectOne')."</option>\n";
|
||||
foreach($aAllowedValues as $key => $display_value)
|
||||
{
|
||||
if ((count($aAllowedValues) == 1) && $bMandatory )
|
||||
@@ -1184,69 +1205,107 @@ EOF
|
||||
$oPage->AddTabContainer(OBJECT_PROPERTIES_TAB);
|
||||
$oPage->SetCurrentTabContainer(OBJECT_PROPERTIES_TAB);
|
||||
$oPage->SetCurrentTab(Dict::S('UI:PropertiesTab'));
|
||||
$aDetailsList = $this->FLattenZList(MetaModel::GetZListItems($sClass, 'details'));
|
||||
// $aDetailsList = $this->FLattenZList(MetaModel::GetZListItems($sClass, 'details'));
|
||||
//$aFullList = MetaModel::ListAttributeDefs($sClass);
|
||||
$aList = array();
|
||||
// Compute the list of properties to display, first the attributes in the 'details' list, then
|
||||
// all the remaining attributes that are not external fields
|
||||
foreach($aDetailsList as $sAttCode)
|
||||
{
|
||||
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
|
||||
if (!$oAttDef->IsExternalField())
|
||||
{
|
||||
$aList[] = $sAttCode;
|
||||
}
|
||||
}
|
||||
// foreach($aDetailsList as $sAttCode)
|
||||
// {
|
||||
// $oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
|
||||
// if (!$oAttDef->IsExternalField())
|
||||
// {
|
||||
// $aList[] = $sAttCode;
|
||||
// }
|
||||
// }
|
||||
|
||||
foreach($aList as $sAttCode)
|
||||
$aDetailsList = MetaModel::GetZListItems($sClass, 'details');
|
||||
$aDetailsStruct = self::ProcessZlist($aDetailsList, array('UI:PropertiesTab' => array()), 'UI:PropertiesTab', 'col1', '');
|
||||
$sHtml = '';
|
||||
$aDetails = array();
|
||||
foreach($aDetailsStruct as $sTab => $aCols )
|
||||
{
|
||||
$iFlags = $this->GetAttributeFlags($sAttCode);
|
||||
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
|
||||
if ( (!$oAttDef->IsLinkSet()) && (($iFlags & OPT_ATT_HIDDEN) == 0))
|
||||
$aDetails[$sTab] = array();
|
||||
ksort($aCols);
|
||||
$oPage->SetCurrentTab(Dict::S($sTab));
|
||||
$oPage->add('<table style="vertical-align:top"><tr>');
|
||||
foreach($aCols as $sColIndex => $aFieldsets)
|
||||
{
|
||||
if ($oAttDef->IsWritable())
|
||||
$oPage->add('<td style="vertical-align:top">');
|
||||
//$aDetails[$sTab][$sColIndex] = array();
|
||||
foreach($aFieldsets as $sFieldsetName => $aFields)
|
||||
{
|
||||
if ($sStateAttCode == $sAttCode)
|
||||
$aDetails[$sTab][$sColIndex] = array();
|
||||
if (!empty($sFieldsetName))
|
||||
{
|
||||
// State attribute is always read-only from the UI
|
||||
$sHTMLValue = $this->GetStateLabel();
|
||||
$aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => $sHTMLValue);
|
||||
$oPage->add('<fieldset>');
|
||||
$oPage->add('<legend>'.Dict::S($sFieldsetName).'</legend>');
|
||||
}
|
||||
else
|
||||
foreach($aFields as $sAttCode)
|
||||
{
|
||||
$iFlags = $this->GetAttributeFlags($sAttCode);
|
||||
if ($iFlags & OPT_ATT_HIDDEN)
|
||||
$aVal = null;
|
||||
$iFlags = $this->GetAttributeFlags($sAttCode);
|
||||
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
|
||||
if ( (!$oAttDef->IsLinkSet()) && (($iFlags & OPT_ATT_HIDDEN) == 0))
|
||||
{
|
||||
// Attribute is hidden, do nothing
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($iFlags & OPT_ATT_READONLY)
|
||||
if ($oAttDef->IsWritable())
|
||||
{
|
||||
// Attribute is read-only
|
||||
$sHTMLValue = $this->GetAsHTML($sAttCode);
|
||||
if ($sStateAttCode == $sAttCode)
|
||||
{
|
||||
// State attribute is always read-only from the UI
|
||||
$sHTMLValue = $this->GetStateLabel();
|
||||
$aVal = array('label' => $oAttDef->GetLabel(), 'value' => $sHTMLValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
$iFlags = $this->GetAttributeFlags($sAttCode);
|
||||
if ($iFlags & OPT_ATT_HIDDEN)
|
||||
{
|
||||
// Attribute is hidden, do nothing
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($iFlags & OPT_ATT_READONLY)
|
||||
{
|
||||
// Attribute is read-only
|
||||
$sHTMLValue = $this->GetAsHTML($sAttCode);
|
||||
}
|
||||
else
|
||||
{
|
||||
$sValue = $this->Get($sAttCode);
|
||||
$sDisplayValue = $this->GetEditValue($sAttCode);
|
||||
$aArgs = array('this' => $this);
|
||||
$sInputId = $this->m_iFormId.'_'.$sAttCode;
|
||||
$sHTMLValue = "<span id=\"field_{$sInputId}\">".self::GetFormElementForField($oPage, $sClass, $sAttCode, $oAttDef, $sValue, $sDisplayValue, $sInputId, '', $iFlags, $aArgs).'</span>';
|
||||
$aFieldsMap[$sAttCode] = $sInputId;
|
||||
|
||||
}
|
||||
$aVal = array('label' => '<span title="'.$oAttDef->GetDescription().'">'.$oAttDef->GetLabel().'</span>', 'value' => $sHTMLValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$sValue = $this->Get($sAttCode);
|
||||
$sDisplayValue = $this->GetEditValue($sAttCode);
|
||||
$aArgs = array('this' => $this);
|
||||
$sInputId = $this->m_iFormId.'_'.$sAttCode;
|
||||
$sHTMLValue = "<span id=\"field_{$sInputId}\">".self::GetFormElementForField($oPage, $sClass, $sAttCode, $oAttDef, $sValue, $sDisplayValue, $sInputId, '', $iFlags, $aArgs).'</span>';
|
||||
$aFieldsMap[$sAttCode] = $sInputId;
|
||||
|
||||
$aVal = array('label' => '<span title="'.$oAttDef->GetDescription().'">'.$oAttDef->GetLabel().'</span>', 'value' => $this->GetAsHTML($sAttCode));
|
||||
}
|
||||
$aDetails[] = array('label' => '<span title="'.$oAttDef->GetDescription().'">'.$oAttDef->GetLabel().'</span>', 'value' => $sHTMLValue);
|
||||
}
|
||||
if ($aVal != null)
|
||||
{
|
||||
// The field is visible, add it to the current column
|
||||
$aDetails[$sTab][$sColIndex][] = $aVal;
|
||||
}
|
||||
}
|
||||
$oPage->Details($aDetails[$sTab][$sColIndex]);
|
||||
if (!empty($sFieldsetName))
|
||||
{
|
||||
$oPage->add('</fieldset>');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$aDetails[] = array('label' => '<span title="'.$oAttDef->GetDescription().'">'.$oAttDef->GetLabel().'</span>', 'value' => $this->GetAsHTML($sAttCode));
|
||||
}
|
||||
$oPage->add('</td>');
|
||||
}
|
||||
$oPage->add('</tr></table>');
|
||||
}
|
||||
$oPage->details($aDetails);
|
||||
|
||||
// Now display the relations, one tab per relation
|
||||
|
||||
$this->DisplayBareRelations($oPage, true); // Edit mode
|
||||
@@ -1413,7 +1472,7 @@ EOF
|
||||
}
|
||||
else
|
||||
{
|
||||
$aResult = array_merge($aResult, $this->FlattenZList($value));
|
||||
$aResult = array_merge($aResult,self::FlattenZList($value));
|
||||
}
|
||||
}
|
||||
return $aResult;
|
||||
@@ -1552,5 +1611,22 @@ EOF
|
||||
}
|
||||
return $aResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps the given context parameter name to the appropriate filter/search code for this class
|
||||
* @param string $sContextParam Name of the context parameter, i.e. 'org_id'
|
||||
* @return string Filter code, i.e. 'customer_id'
|
||||
*/
|
||||
public static function MapContextParam($sContextParam)
|
||||
{
|
||||
if ($sContextParam == 'menu')
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $sContextParam;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -320,17 +320,40 @@ class DisplayBlock
|
||||
}
|
||||
if ($this->m_sStyle != 'links')
|
||||
{
|
||||
$aFilterCodes = array_keys(MetaModel::GetClassFilterDefs($this->m_oFilter->GetClass()));
|
||||
$oAppContext = new ApplicationContext();
|
||||
$sClass = $this->m_oFilter->GetClass();
|
||||
$aFilterCodes = array_keys(MetaModel::GetClassFilterDefs($sClass));
|
||||
foreach($oAppContext->GetNames() as $sContextParam)
|
||||
{
|
||||
eval("\$sParamCode = $sClass::MapContextParam('$sContextParam');"); //Map context parameter to the value/filter code depending on the class
|
||||
if (!is_null($sParamCode))
|
||||
{
|
||||
$sParamValue = $oAppContext->GetCurrentValue($sContextParam, null);
|
||||
if (!is_null($sParamValue))
|
||||
{
|
||||
$aExtraParams[$sParamCode] = $sParamValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach($aFilterCodes as $sFilterCode)
|
||||
{
|
||||
$sExternalFilterValue = utils::ReadParam($sFilterCode, '');
|
||||
$condition = null;
|
||||
if (isset($aExtraParams[$sFilterCode]))
|
||||
{
|
||||
$this->m_oFilter->AddCondition($sFilterCode, trim($aExtraParams[$sFilterCode])); // Use the default 'loose' operator
|
||||
$condition = $aExtraParams[$sFilterCode];
|
||||
}
|
||||
else if ($bDoSearch && $sExternalFilterValue != "")
|
||||
// else if ($bDoSearch && $sExternalFilterValue != "")
|
||||
if ($bDoSearch && $sExternalFilterValue != "")
|
||||
{
|
||||
$this->m_oFilter->AddCondition($sFilterCode, trim($sExternalFilterValue)); // Use the default 'loose' operator
|
||||
// Search takes precedence over context params...
|
||||
unset($aExtraParams[$sFilterCode]);
|
||||
$condition = trim($sExternalFilterValue);
|
||||
}
|
||||
|
||||
if (!is_null($condition))
|
||||
{
|
||||
$this->m_oFilter->AddCondition($sFilterCode, $condition); // Use the default 'loose' operator
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -582,7 +605,7 @@ class DisplayBlock
|
||||
$aFilterCodes = array_keys(MetaModel::GetClassFilterDefs($this->m_oFilter->GetClass()));
|
||||
foreach($oAppContext->GetNames() as $sFilterCode)
|
||||
{
|
||||
$sContextParamValue = trim(utils::ReadParam($sFilterCode, null));
|
||||
$sContextParamValue = $oAppContext->GetCurrentValue($sFilterCode, null);
|
||||
if (!is_null($sContextParamValue) && ! empty($sContextParamValue) && MetaModel::IsValidFilterCode($sClass, $sFilterCode))
|
||||
{
|
||||
$this->m_oFilter->AddCondition($sFilterCode, $sContextParamValue); // Use the default 'loose' operator
|
||||
@@ -596,7 +619,7 @@ class DisplayBlock
|
||||
$this->m_oSet = new CMDBObjectSet($this->m_oFilter, array(), $aQueryParams);
|
||||
}
|
||||
$iCount = $this->m_oSet->Count();
|
||||
$sHyperlink = '../pages/UI.php?operation=search&filter='.$this->m_oFilter->serialize();
|
||||
$sHyperlink = '../pages/UI.php?operation=search&'.$oAppContext->GetForLink().'&filter='.$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>';
|
||||
@@ -624,7 +647,7 @@ class DisplayBlock
|
||||
$aFilterCodes = array_keys(MetaModel::GetClassFilterDefs($this->m_oFilter->GetClass()));
|
||||
foreach($oAppContext->GetNames() as $sFilterCode)
|
||||
{
|
||||
$sContextParamValue = trim(utils::ReadParam($sFilterCode, null));
|
||||
$sContextParamValue = $oAppContext->GetCurrentValue($sFilterCode, null);
|
||||
if (!is_null($sContextParamValue) && ! empty($sContextParamValue) && MetaModel::IsValidFilterCode($sClass, $sFilterCode))
|
||||
{
|
||||
$this->m_oFilter->AddCondition($sFilterCode, $sContextParamValue); // Use the default 'loose' operator
|
||||
@@ -657,7 +680,7 @@ class DisplayBlock
|
||||
}
|
||||
else
|
||||
{
|
||||
$sHyperlink = '../pages/UI.php?operation=search&filter='.$oFilter->serialize();
|
||||
$sHyperlink = '../pages/UI.php?operation=search&'.$oAppContext->GetForLink().'&filter='.$oFilter->serialize();
|
||||
$aCounts[$sStateValue] = "<a href=\"$sHyperlink\">{$aCounts[$sStateValue]}</a>";
|
||||
}
|
||||
}
|
||||
@@ -666,7 +689,7 @@ class DisplayBlock
|
||||
$sHtml .= '<tr><td>'.implode('</td><td>', $aCounts).'</td></tr></table></div>';
|
||||
// Title & summary
|
||||
$iCount = $this->m_oSet->Count();
|
||||
$sHyperlink = '../pages/UI.php?operation=search&filter='.$this->m_oFilter->serialize();
|
||||
$sHyperlink = '../pages/UI.php?operation=search&'.$oAppContext->GetForLink().'&filter='.$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;
|
||||
|
||||
@@ -32,12 +32,12 @@ require_once("../application/user.preferences.class.inc.php");
|
||||
class iTopWebPage extends NiceWebPage
|
||||
{
|
||||
private $m_sMenu;
|
||||
private $m_currentOrganization;
|
||||
// private $m_currentOrganization;
|
||||
private $m_aTabs;
|
||||
private $m_sCurrentTabContainer;
|
||||
private $m_sCurrentTab;
|
||||
|
||||
public function __construct($sTitle, $currentOrganization)
|
||||
public function __construct($sTitle)
|
||||
{
|
||||
parent::__construct($sTitle);
|
||||
$this->m_sCurrentTabContainer = '';
|
||||
@@ -46,7 +46,7 @@ class iTopWebPage extends NiceWebPage
|
||||
$this->m_sMenu = "";
|
||||
$oAppContext = new ApplicationContext();
|
||||
$sExtraParams = $oAppContext->GetForLink();
|
||||
$this->m_currentOrganization = $currentOrganization;
|
||||
// $this->m_currentOrganization = $currentOrganization;
|
||||
$this->add_header("Content-type: text/html; charset=utf-8");
|
||||
$this->add_header("Cache-control: no-cache");
|
||||
$this->add_linked_stylesheet("../css/jquery.treeview.css");
|
||||
@@ -359,24 +359,6 @@ EOF
|
||||
// }
|
||||
// }
|
||||
|
||||
// For automplete
|
||||
function findValue(li) {
|
||||
if( li == null ) return alert("No match!");
|
||||
|
||||
// if coming from an AJAX call, let's use the CityId as the value
|
||||
if( !!li.extra ) var sValue = li.extra[0];
|
||||
|
||||
// otherwise, let's just display the value in the text box
|
||||
else var sValue = li.selectValue;
|
||||
|
||||
//alert(\"The value you selected was: \" + sValue);
|
||||
}
|
||||
|
||||
function selectItem(li) {
|
||||
findValue(li);
|
||||
}
|
||||
|
||||
|
||||
function formatItem(row) {
|
||||
return row[0];
|
||||
}
|
||||
@@ -478,15 +460,17 @@ EOF
|
||||
break;
|
||||
|
||||
default:
|
||||
$oAppContext = new ApplicationContext();
|
||||
$iCurrentOrganization = $oAppContext->GetCurrentValue('org_id');
|
||||
$sHtml = '<div id="SiloSelection">';
|
||||
$sHtml .= '<form style="display:inline" action="'.$_SERVER['PHP_SELF'].'"><select style="width:150px;font-size:x-small" name="org_id" title="Pick an organization" onChange="this.form.submit();">';
|
||||
$sSelected = ($this->m_currentOrganization == '') ? ' selected' : '';
|
||||
$sHtml .= '<form style="display:inline" action="'.$_SERVER['PHP_SELF'].'"><select style="width:150px;font-size:x-small" name="c[org_id]" title="Pick an organization" onChange="this.form.submit();">';
|
||||
$sSelected = ($iCurrentOrganization == '') ? ' selected' : '';
|
||||
$sHtml .= '<option value=""'.$sSelected.'>'.Dict::S('UI:AllOrganizations').'</option>';
|
||||
while($oOrg = $oSet->Fetch())
|
||||
{
|
||||
if ($this->m_currentOrganization == $oOrg->GetKey())
|
||||
if ($iCurrentOrganization == $oOrg->GetKey())
|
||||
{
|
||||
$oCurrentOrganization = $oOrg;
|
||||
// $oCurrentOrganization = $oOrg;
|
||||
$sSelected = " selected";
|
||||
|
||||
}
|
||||
@@ -498,8 +482,8 @@ EOF
|
||||
}
|
||||
$sHtml .= '</select>';
|
||||
// Add other dimensions/context information to this form
|
||||
$oAppContext = new ApplicationContext();
|
||||
$oAppContext->Reset('org_id'); // Org id is handled above and we want to be able to change it here !
|
||||
// $oAppContext = new ApplicationContext();
|
||||
$oAppContext->Reset('org_id'); // org_id is handled above and we want to be able to change it here !
|
||||
$sHtml .= $oAppContext->GetForForm();
|
||||
$sHtml .= '</form>';
|
||||
$sHtml .= '</div>';
|
||||
@@ -511,10 +495,9 @@ EOF
|
||||
{
|
||||
// Display the menu
|
||||
$oAppContext = new ApplicationContext();
|
||||
$iActiveNodeId = ApplicationMenu::GetActiveNodeId();
|
||||
$iAccordionIndex = 0;
|
||||
|
||||
ApplicationMenu::DisplayMenu($this, $oAppContext->GetAsHash(), $iActiveNodeId);
|
||||
ApplicationMenu::DisplayMenu($this, $oAppContext->GetAsHash());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -542,8 +525,10 @@ EOF
|
||||
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
|
||||
echo "<html>\n";
|
||||
echo "<head>\n";
|
||||
echo "<title>{$this->s_title}</title>\n";
|
||||
// Make sure that Internet Explorer renders the page using its latest/highest/greatest standards !
|
||||
echo "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n";
|
||||
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
|
||||
echo "<title>{$this->s_title}</title>\n";
|
||||
echo $this->get_base_tag();
|
||||
// Stylesheets MUST be loaded before any scripts otherwise
|
||||
// jQuery scripts may face some spurious problems (like failing on a 'reload')
|
||||
|
||||
@@ -201,7 +201,7 @@ EOF
|
||||
{
|
||||
$bSecured = false;
|
||||
|
||||
if ( !empty($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!= 'off') )
|
||||
if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off'))
|
||||
{
|
||||
$bSecured = true;
|
||||
}
|
||||
@@ -339,6 +339,7 @@ EOF
|
||||
static function DoLogin($bMustBeAdmin = false, $bIsAllowedToPortalUsers = false)
|
||||
{
|
||||
$operation = utils::ReadParam('loginop', '');
|
||||
session_name(utils::GetConfig()->Get('session_name'));
|
||||
session_start();
|
||||
|
||||
if ($operation == 'logoff')
|
||||
|
||||
@@ -218,7 +218,8 @@ class ApplicationMenu
|
||||
*/
|
||||
static public function GetActiveNodeId()
|
||||
{
|
||||
$iMenuIndex = utils::ReadParam('menu', -1);
|
||||
$oAppContext = new ApplicationContext();
|
||||
$iMenuIndex = $oAppContext->GetCurrentValue('menu', -1);
|
||||
|
||||
if ($iMenuIndex == -1)
|
||||
{
|
||||
@@ -319,7 +320,7 @@ abstract class MenuNode
|
||||
|
||||
public function GetHyperlink($aExtraParams)
|
||||
{
|
||||
$aExtraParams['menu'] = $this->GetIndex();
|
||||
$aExtraParams['c[menu]'] = $this->GetIndex();
|
||||
return $this->AddParams('../pages/UI.php', $aExtraParams);
|
||||
}
|
||||
|
||||
@@ -593,7 +594,7 @@ class WebPageMenuNode extends MenuNode
|
||||
|
||||
public function GetHyperlink($aExtraParams)
|
||||
{
|
||||
$aExtraParams['menu'] = $this->GetIndex();
|
||||
$aExtraParams['c[menu]'] = $this->GetIndex();
|
||||
return $this->AddParams( $this->sHyperlink, $aExtraParams);
|
||||
}
|
||||
|
||||
@@ -631,7 +632,7 @@ class NewObjectMenuNode extends MenuNode
|
||||
public function GetHyperlink($aExtraParams)
|
||||
{
|
||||
$sHyperlink = '../pages/UI.php?operation=new&class='.$this->sClass;
|
||||
$aExtraParams['menu'] = $this->GetIndex();
|
||||
$aExtraParams['c[menu]'] = $this->GetIndex();
|
||||
return $this->AddParams($sHyperlink, $aExtraParams);
|
||||
}
|
||||
|
||||
|
||||
@@ -240,7 +240,7 @@ class DisplayTemplate
|
||||
</itoptab>
|
||||
</itoptabs>';
|
||||
|
||||
$oPage = new iTopWebPage('Unit Test', 3);
|
||||
$oPage = new iTopWebPage('Unit Test');
|
||||
//$oPage->add("Template content: <pre>".htmlentities($sTemplate)."</pre>\n");
|
||||
$oTemplate = new DisplayTemplate($sTemplate);
|
||||
$oTemplate->Render($oPage, array('class'=>'Network device','pkey'=> 271, 'name' => 'deliversw01.mecanorama.fr', 'org_id' => 3));
|
||||
|
||||
@@ -17,94 +17,81 @@
|
||||
/**
|
||||
* This class records the pending "transactions" corresponding to forms that have not been
|
||||
* submitted yet, in order to prevent double submissions. When created a transaction remains valid
|
||||
* until it is "used" by calling IsTransactionValid once, or until it
|
||||
* expires (delay = TRANSACTION_EXPIRATION_DELAY, defaults to 4 hours)
|
||||
* until the user's session expires
|
||||
* @package iTop
|
||||
*/
|
||||
// How long a "transaction" is considered valid, i.e. when a form is submitted
|
||||
// if the form dates back from too long a time, it is considered invalid. This is
|
||||
// because since HTTP is not a connected protocol, we cannot know when a user disconnects
|
||||
// from the application (maybe just by closing her browser), so we keep track - in the database - of all pending
|
||||
// forms that have not yet been submitted. To limit this list we consider that after some time
|
||||
// a "transaction" is no loger valid an gets purged from the table
|
||||
define ('TRANSACTION_EXPIRATION_DELAY', 3600*4); // default: 4h
|
||||
|
||||
require_once('../core/dbobject.class.php');
|
||||
|
||||
class privUITransaction extends DBObject
|
||||
class privUITransaction
|
||||
{
|
||||
public static function Init()
|
||||
{
|
||||
$aParams = array
|
||||
(
|
||||
"category" => "gui",
|
||||
"key_type" => "autoincrement",
|
||||
"name_attcode" => "expiration_date",
|
||||
"state_attcode" => "",
|
||||
"reconc_keys" => array(),
|
||||
"db_table" => "priv_transaction",
|
||||
"db_key_field" => "id",
|
||||
"db_finalclass_field" => "",
|
||||
);
|
||||
MetaModel::Init_Params($aParams);
|
||||
MetaModel::Init_AddAttribute(new AttributeDateTime("expiration_date", array("allowed_values"=>null, "sql"=>"expiration_date", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
|
||||
|
||||
MetaModel::Init_SetZListItems('details', array('expiration_date')); // Attributes to be displayed for the complete details
|
||||
MetaModel::Init_SetZListItems('list', array('expiration_date')); // Attributes to be displayed for a list
|
||||
}
|
||||
/**
|
||||
* Create a new transaction, store it in the database and return its id
|
||||
* Create a new transaction id, store it in the session and return its id
|
||||
* @param void
|
||||
* @return int The identifier of the new transaction
|
||||
*/
|
||||
public static function GetNewTransactionId()
|
||||
{
|
||||
// First remove all the expired transactions...
|
||||
self::CleanupExpiredTransactions();
|
||||
$oTransaction = new privUITransaction();
|
||||
$sDate = date('Y-m-d H:i:s', time()+TRANSACTION_EXPIRATION_DELAY);
|
||||
$oTransaction->Set('expiration_date', $sDate); // 4 h delay by default
|
||||
$oTransaction->DBInsert();
|
||||
return sprintf("%d", $oTransaction->GetKey());
|
||||
if (!isset($_SESSION['transactions']))
|
||||
{
|
||||
$_SESSION['transactions'] = array();
|
||||
}
|
||||
// Strictly speaking, the two lines below should be grouped together
|
||||
// by a critical section
|
||||
// sem_acquire($rSemIdentified);
|
||||
$id = 1 + count($_SESSION['transactions']);
|
||||
$_SESSION['transactions'][$id] = true;
|
||||
// sem_release($rSemIdentified);
|
||||
|
||||
return sprintf("%d", $id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether a transaction is valid or not and remove the valid transaction from
|
||||
* the database so that another call to IsTransactionValid for the same transaction
|
||||
* Check whether a transaction is valid or not and (optionally) remove the valid transaction from
|
||||
* the session so that another call to IsTransactionValid for the same transaction id
|
||||
* will return false
|
||||
* @param int $id Identifier of the transaction, as returned by GetNewTransactionId
|
||||
* @param bool $bRemoveTransaction True if the transaction must be removed
|
||||
* @return bool True if the transaction is valid, false otherwise
|
||||
*/
|
||||
public static function IsTransactionValid($id)
|
||||
public static function IsTransactionValid($id, $bRemoveTransaction = true)
|
||||
{
|
||||
// First remove all the expired transactions...
|
||||
self::CleanupExpiredTransactions();
|
||||
// TO DO put a critical section around this part to be 100% safe...
|
||||
// sem_acquire(...)
|
||||
$bResult = false;
|
||||
$oTransaction = MetaModel::GetObject('privUITransaction', $id, false /* MustBeFound */);
|
||||
if ($oTransaction)
|
||||
$bResult = false;
|
||||
if (isset($_SESSION['transactions']))
|
||||
{
|
||||
$bResult = true;
|
||||
$oTransaction->DBDelete();
|
||||
// Strictly speaking, the eight lines below should be grouped together
|
||||
// inside the same critical section as above
|
||||
// sem_acquire($rSemIdentified);
|
||||
if (isset($_SESSION['transactions'][$id]))
|
||||
{
|
||||
$bResult = true;
|
||||
if ($bRemoveTransaction)
|
||||
{
|
||||
unset($_SESSION['transactions'][$id]);
|
||||
}
|
||||
}
|
||||
// sem_release($rSemIdentified);
|
||||
}
|
||||
// sem_release(...)
|
||||
return $bResult;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove from the database all transactions that have expired
|
||||
* Removes the transaction specified by its id
|
||||
* @param int $id The Identifier (as returned by GetNewTranscationId) of the transaction to be removed.
|
||||
* @return void
|
||||
*/
|
||||
protected static function CleanupExpiredTransactions()
|
||||
public static function RemoveTransaction($id)
|
||||
{
|
||||
$sQuery = 'SELECT privUITransaction WHERE expiration_date < NOW()';
|
||||
$oSearch = DBObjectSearch::FromOQL($sQuery);
|
||||
$oSet = new DBObjectSet($oSearch);
|
||||
while($oTransaction = $oSet->Fetch())
|
||||
if (isset($_SESSION['transactions']))
|
||||
{
|
||||
$oTransaction->DBDelete();
|
||||
}
|
||||
// Strictly speaking, the three lines below should be grouped together
|
||||
// inside the same critical section as above
|
||||
// sem_acquire($rSemIdentified);
|
||||
if (isset($_SESSION['transactions'][$id]))
|
||||
{
|
||||
unset($_SESSION['transactions'][$id]);
|
||||
}
|
||||
// sem_release($rSemIdentified);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -36,14 +36,16 @@ class UILinksWidget
|
||||
protected $m_sExtKeyToRemote;
|
||||
protected $m_sLinkedClass;
|
||||
protected $m_sRemoteClass;
|
||||
protected $m_bDuplicatesAllowed;
|
||||
protected static $iWidgetIndex = 0;
|
||||
|
||||
public function __construct($sClass, $sAttCode, $iInputId, $sNameSuffix = '')
|
||||
public function __construct($sClass, $sAttCode, $iInputId, $sNameSuffix = '', $bDuplicatesAllowed = false)
|
||||
{
|
||||
$this->m_sClass = $sClass;
|
||||
$this->m_sAttCode = $sAttCode;
|
||||
$this->m_sNameSuffix = $sNameSuffix;
|
||||
$this->m_iInputId = $iInputId;
|
||||
$this->m_bDuplicatesAllowed = $bDuplicatesAllowed;
|
||||
$this->m_aEditableFields = array();
|
||||
self::$iWidgetIndex++;
|
||||
|
||||
@@ -58,7 +60,7 @@ class UILinksWidget
|
||||
|
||||
$this->m_aEditableFields = array();
|
||||
$this->m_aTableConfig = array();
|
||||
$this->m_aTableConfig['form::checkbox'] = array( 'label' => "<input class=\"select_all\" type=\"checkbox\" value=\"1\" onChange=\"var value = this.checked; $('#linkedset_{$this->m_sAttCode}{$this->m_sNameSuffix} .selection').each( function() { this.checked = value; } ); oWidget".self::$iWidgetIndex.".OnSelectChange();\">", 'description' => Dict::S('UI:SelectAllToggle+'));
|
||||
$this->m_aTableConfig['form::checkbox'] = array( 'label' => "<input class=\"select_all\" type=\"checkbox\" value=\"1\" onClick=\"CheckAll('#linkedset_{$this->m_sAttCode}{$this->m_sNameSuffix} .selection', this.checked); oWidget".self::$iWidgetIndex.".OnSelectChange();\">", 'description' => Dict::S('UI:SelectAllToggle+'));
|
||||
|
||||
foreach(MetaModel::ListAttributeDefs($this->m_sLinkedClass) as $sAttCode=>$oAttDef)
|
||||
{
|
||||
@@ -222,8 +224,9 @@ class UILinksWidget
|
||||
$aForm[$key] = $this->GetFormRow($oPage, $oLinkedObj, $oCurrentLink, $aArgs);
|
||||
}
|
||||
$sHtmlValue .= $this->DisplayFormTable($oPage, $this->m_aTableConfig, $aForm);
|
||||
$sDuplicates = ($this->m_bDuplicatesAllowed) ? 'true' : 'false';
|
||||
$oPage->add_ready_script(<<<EOF
|
||||
oWidget$iWidgetIndex = new LinksWidget('{$this->m_sAttCode}{$this->m_sNameSuffix}', '{$this->m_sClass}', '{$this->m_sAttCode}', '{$this->m_iInputId}', '{$this->m_sNameSuffix}');
|
||||
oWidget$iWidgetIndex = new LinksWidget('{$this->m_sAttCode}{$this->m_sNameSuffix}', '{$this->m_sClass}', '{$this->m_sAttCode}', '{$this->m_iInputId}', '{$this->m_sNameSuffix}', $sDuplicates);
|
||||
oWidget$iWidgetIndex.Init();
|
||||
EOF
|
||||
);
|
||||
@@ -383,7 +386,7 @@ EOF
|
||||
// No remote class specified use the one defined in the linkedset
|
||||
$oFilter = new DBObjectSearch($this->m_sRemoteClass);
|
||||
}
|
||||
if (count($aAlreadyLinkedIds) > 0)
|
||||
if (!$this->m_bDuplicatesAllowed && count($aAlreadyLinkedIds) > 0)
|
||||
{
|
||||
// Positive IDs correspond to existing link records
|
||||
// negative IDs correspond to "remote" objects to be linked
|
||||
|
||||
@@ -52,10 +52,13 @@ class UIPasswordWidget
|
||||
{
|
||||
$sCode = $this->sAttCode.$this->sNameSuffix;
|
||||
$iWidgetIndex = self::$iWidgetIndex;
|
||||
$sPasswordValue = utils::ReadPostedParam("attr_$sCode", '*****');
|
||||
$sConfirmPasswordValue = utils::ReadPostedParam("attr_{$sCode}_confirmed", '*****');
|
||||
$sChangedValue = (($sPasswordValue != '*****') || ($sConfirmPasswordValue != '*****')) ? 1 : 0;
|
||||
$sHtmlValue = '';
|
||||
$sHtmlValue = '<input type="password" maxlength="255" name="attr_'.$sCode.'" id="'.$this->iId.'" value="*****"/> <span id="v_'.$this->iId.'"></span><br/>';
|
||||
$sHtmlValue .= '<input type="password" maxlength="255" id="'.$this->iId.'_confirm" value="*****"/> '.Dict::S('UI:PasswordConfirm').' <input type="button" value="'.Dict::S('UI:Button:ResetPassword').'" onClick="ResetPwd(\''.$this->iId.'\');">';
|
||||
$sHtmlValue .= '<input type="hidden" id="'.$this->iId.'_changed" name="attr_'.$sCode.'_changed" value="0"/>';
|
||||
$sHtmlValue = '<input type="password" maxlength="255" name="attr_'.$sCode.'" id="'.$this->iId.'" value="'.htmlentities($sPasswordValue, ENT_QUOTES, 'UTF-8').'"/> <span id="v_'.$this->iId.'"></span><br/>';
|
||||
$sHtmlValue .= '<input type="password" maxlength="255" id="'.$this->iId.'_confirm" value="'.htmlentities($sConfirmPasswordValue, ENT_QUOTES, 'UTF-8').'" name="attr_'.$sCode.'_confirmed"/> '.Dict::S('UI:PasswordConfirm').' <input type="button" value="'.Dict::S('UI:Button:ResetPassword').'" onClick="ResetPwd(\''.$this->iId.'\');">';
|
||||
$sHtmlValue .= '<input type="hidden" id="'.$this->iId.'_changed" name="attr_'.$sCode.'_changed" value="'.$sChangedValue.'"/>';
|
||||
|
||||
$oPage->add_ready_script("$('#$this->iId').bind('keyup change', function(evt) { return PasswordFieldChanged('$this->iId') } );"); // Bind to a custom event: validate
|
||||
$oPage->add_ready_script("$('#$this->iId').bind('keyup change', function(evt) { return PasswordFieldChanged('$this->iId') } );"); // Bind to a custom event: validate
|
||||
|
||||
@@ -157,9 +157,14 @@ class utils
|
||||
return privUITransaction::GetNewTransactionId();
|
||||
}
|
||||
|
||||
public static function IsTransactionValid($sId)
|
||||
public static function IsTransactionValid($sId, $bRemoveTransaction = true)
|
||||
{
|
||||
return privUITransaction::IsTransactionValid($sId);
|
||||
return privUITransaction::IsTransactionValid($sId, $bRemoveTransaction);
|
||||
}
|
||||
|
||||
public static function RemoveTransaction($sId)
|
||||
{
|
||||
return privUITransaction::RemoveTransaction($sId);
|
||||
}
|
||||
|
||||
public static function ReadFromFile($sFileName)
|
||||
@@ -226,7 +231,7 @@ class utils
|
||||
static public function GetAbsoluteUrl($bQueryString = true, $bForceHTTPS = false)
|
||||
{
|
||||
// Build an absolute URL to this page on this server/port
|
||||
$sServerName = $_SERVER['SERVER_NAME'];
|
||||
$sServerName = isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : '';
|
||||
if (self::GetConfig()->GetSecureConnectionRequired() || self::GetConfig()->GetHttpsHyperlinks())
|
||||
{
|
||||
// If a secure connection is required, or if the URL is requested to start with HTTPS
|
||||
@@ -240,14 +245,15 @@ class utils
|
||||
}
|
||||
else
|
||||
{
|
||||
$sProtocol = isset($_SERVER['HTTPS']) ? 'https' : 'http';
|
||||
$sProtocol = (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!="off")) ? 'https' : 'http';
|
||||
$iPort = isset($_SERVER['SERVER_PORT']) ? $_SERVER['SERVER_PORT'] : 80;
|
||||
if ($sProtocol == 'http')
|
||||
{
|
||||
$sPort = ($_SERVER['SERVER_PORT'] == 80) ? '' : ':'.$_SERVER['SERVER_PORT'];
|
||||
$sPort = ($iPort == 80) ? '' : ':'.$iPort;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sPort = ($_SERVER['SERVER_PORT'] == 443) ? '' : ':'.$_SERVER['SERVER_PORT'];
|
||||
$sPort = ($iPort == 443) ? '' : ':'.$iPort;
|
||||
}
|
||||
}
|
||||
// $_SERVER['REQUEST_URI'] is empty when running on IIS
|
||||
|
||||
@@ -30,23 +30,63 @@ require_once("../application/webpage.class.inc.php");
|
||||
*/
|
||||
class XMLPage extends WebPage
|
||||
{
|
||||
function __construct($s_title)
|
||||
/**
|
||||
* For big XML files, it's better NOT to store everything in memory and output the XML piece by piece
|
||||
*/
|
||||
var $m_bPassThrough;
|
||||
var $m_bHeaderSent;
|
||||
|
||||
function __construct($s_title, $bPassThrough = false)
|
||||
{
|
||||
parent::__construct($s_title);
|
||||
$this->add_header("Content-type: text/xml; charset=utf-8");
|
||||
$this->m_bPassThrough = $bPassThrough;
|
||||
$this->m_bHeaderSent = false;
|
||||
$this->add_header("Content-type: text/xml; charset=utf-8");
|
||||
$this->add_header("Cache-control: no-cache");
|
||||
$this->add_header("Content-location: export.xml");
|
||||
$this->add("<?xml version=\"1.0\" encoding=\"UTF-8\"?".">\n");
|
||||
}
|
||||
|
||||
public function output()
|
||||
{
|
||||
$this->add_header("Content-Length: ".strlen(trim($this->s_content)));
|
||||
foreach($this->a_headers as $s_header)
|
||||
{
|
||||
header($s_header);
|
||||
}
|
||||
echo trim($this->s_content);
|
||||
if (!$this->m_bPassThrough)
|
||||
{
|
||||
$this->add("<?xml version=\"1.0\" encoding=\"UTF-8\"?".">\n");
|
||||
$this->add_header("Content-Length: ".strlen(trim($this->s_content)));
|
||||
foreach($this->a_headers as $s_header)
|
||||
{
|
||||
header($s_header);
|
||||
}
|
||||
echo trim($this->s_content);
|
||||
}
|
||||
}
|
||||
|
||||
public function add($sText)
|
||||
{
|
||||
if (!$this->m_bPassThrough)
|
||||
{
|
||||
parent::add($sText);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->m_bHeaderSent)
|
||||
{
|
||||
echo $sText;
|
||||
}
|
||||
else
|
||||
{
|
||||
$s_captured_output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
foreach($this->a_headers as $s_header)
|
||||
{
|
||||
header($s_header);
|
||||
}
|
||||
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?".">\n";
|
||||
echo trim($s_captured_output);
|
||||
echo trim($this->s_content);
|
||||
echo $sText;
|
||||
$this->m_bHeaderSent = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function small_p($sText)
|
||||
|
||||
@@ -488,7 +488,7 @@ class Str
|
||||
*/
|
||||
protected static function xmlencode($string)
|
||||
{
|
||||
return self::xmlentities(iconv("ISO-8859-1", "UTF-8//IGNORE",$string));
|
||||
return self::xmlentities(iconv("UTF-8", "UTF-8//IGNORE",$string));
|
||||
}
|
||||
|
||||
public static function islowcase($sString)
|
||||
|
||||
@@ -359,6 +359,7 @@ class AttributeLinkedSet extends AttributeDefinition
|
||||
{
|
||||
return "ERROR: LIST OF OBJECTS";
|
||||
}
|
||||
public function DuplicatesAllowed() {return false;} // No duplicates for 1:n links, never
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -375,6 +376,7 @@ class AttributeLinkedSetIndirect extends AttributeLinkedSet
|
||||
public function IsIndirect() {return true;}
|
||||
public function GetExtKeyToRemote() { return $this->Get('ext_key_to_remote'); }
|
||||
public function GetEditClass() {return "LinkedSet";}
|
||||
public function DuplicatesAllowed() {return $this->GetOptional("duplicates", false);} // The same object may be linked several times... or not...
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -575,6 +577,106 @@ class AttributeInteger extends AttributeDBField
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Map a decimal value column (suitable for financial computations) to an attribute
|
||||
* internally in PHP such numbers are represented as string. Should you want to perform
|
||||
* a calculation on them, it is recommended to use the BC Math functions in order to
|
||||
* retain the precision
|
||||
*
|
||||
* @package iTopORM
|
||||
*/
|
||||
class AttributeDecimal extends AttributeDBField
|
||||
{
|
||||
static protected function ListExpectedParams()
|
||||
{
|
||||
return array_merge(parent::ListExpectedParams(), array('digits', 'decimals' /* including precision */));
|
||||
}
|
||||
|
||||
public function GetType() {return "Decimal";}
|
||||
public function GetTypeDesc() {return "Decimal value (could be negative)";}
|
||||
public function GetEditClass() {return "String";}
|
||||
protected function GetSQLCol() {return "DECIMAL(".$this->Get('digits').",".$this->Get('decimals').")";}
|
||||
|
||||
public function GetValidationPattern()
|
||||
{
|
||||
$iNbDigits = $this->Get('digits');
|
||||
$iPrecision = $this->Get('decimals');
|
||||
$iNbIntegerDigits = $iNbDigits - $iPrecision - 1; // -1 because the first digit is treated separately in the pattern below
|
||||
return "^[-+]?[0-9]\d{0,$iNbIntegerDigits}(\.\d{0,$iPrecision})?$";
|
||||
}
|
||||
|
||||
public function GetBasicFilterOperators()
|
||||
{
|
||||
return array(
|
||||
"!="=>"differs from",
|
||||
"="=>"equals",
|
||||
">"=>"greater (strict) than",
|
||||
">="=>"greater than",
|
||||
"<"=>"less (strict) than",
|
||||
"<="=>"less than",
|
||||
"in"=>"in"
|
||||
);
|
||||
}
|
||||
public function GetBasicFilterLooseOperator()
|
||||
{
|
||||
// Unless we implement an "equals approximately..." or "same order of magnitude"
|
||||
return "=";
|
||||
}
|
||||
|
||||
public function GetBasicFilterSQLExpr($sOpCode, $value)
|
||||
{
|
||||
$sQValue = CMDBSource::Quote($value);
|
||||
switch ($sOpCode)
|
||||
{
|
||||
case '!=':
|
||||
return $this->GetSQLExpr()." != $sQValue";
|
||||
break;
|
||||
case '>':
|
||||
return $this->GetSQLExpr()." > $sQValue";
|
||||
break;
|
||||
case '>=':
|
||||
return $this->GetSQLExpr()." >= $sQValue";
|
||||
break;
|
||||
case '<':
|
||||
return $this->GetSQLExpr()." < $sQValue";
|
||||
break;
|
||||
case '<=':
|
||||
return $this->GetSQLExpr()." <= $sQValue";
|
||||
break;
|
||||
case 'in':
|
||||
if (!is_array($value)) throw new CoreException("Expected an array for argument value (sOpCode='$sOpCode')");
|
||||
return $this->GetSQLExpr()." IN ('".implode("', '", $value)."')";
|
||||
break;
|
||||
|
||||
case '=':
|
||||
default:
|
||||
return $this->GetSQLExpr()." = \"$value\"";
|
||||
}
|
||||
}
|
||||
|
||||
public function GetNullValue()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public function IsNull($proposedValue)
|
||||
{
|
||||
return is_null($proposedValue);
|
||||
}
|
||||
|
||||
public function MakeRealValue($proposedValue)
|
||||
{
|
||||
if (is_null($proposedValue)) return null;
|
||||
if ($proposedValue == '') return null;
|
||||
return (string)$proposedValue;
|
||||
}
|
||||
|
||||
public function ScalarToSQL($value)
|
||||
{
|
||||
assert(is_null($value) || preg_match('/'.$this->GetValidationPattern().'/', $value));
|
||||
return (string)$value; // treated as a string
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Map a boolean column to an attribute
|
||||
*
|
||||
@@ -986,6 +1088,12 @@ class AttributeEmailAddress extends AttributeString
|
||||
{
|
||||
return "^([0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$";
|
||||
}
|
||||
|
||||
public function GetAsHTML($sValue)
|
||||
{
|
||||
if (empty($sValue)) return '';
|
||||
return '<a class="mailto" href="mailto:'.$sValue.'">'.parent::GetAsHTML($sValue).'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1096,6 +1204,22 @@ class AttributeEnum extends AttributeString
|
||||
}
|
||||
}
|
||||
|
||||
public function ScalarToSQL($value)
|
||||
{
|
||||
// Note: for strings, the null value is an empty string and it is recorded as such in the DB
|
||||
// but that wasn't working for enums, because '' is NOT one of the allowed values
|
||||
// that's why a null value must be forced to a real null
|
||||
$value = parent::ScalarToSQL($value);
|
||||
if ($this->IsNull($value))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
public function RequiresIndex()
|
||||
{
|
||||
return false;
|
||||
@@ -1117,7 +1241,15 @@ class AttributeEnum extends AttributeString
|
||||
|
||||
public function GetAsHTML($sValue)
|
||||
{
|
||||
$sLabel = Dict::S('Class:'.$this->GetHostClass().'/Attribute:'.$this->GetCode().'/Value:'.$sValue, $sValue);
|
||||
if (is_null($sValue))
|
||||
{
|
||||
// Unless a specific label is defined for the null value of this enum, use a generic "undefined" label
|
||||
$sLabel = Dict::S('Class:'.$this->GetHostClass().'/Attribute:'.$this->GetCode().'/Value:'.$sValue, Dict::S('Enum:Undefined'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$sLabel = Dict::S('Class:'.$this->GetHostClass().'/Attribute:'.$this->GetCode().'/Value:'.$sValue, $sValue);
|
||||
}
|
||||
$sDescription = Dict::S('Class:'.$this->GetHostClass().'/Attribute:'.$this->GetCode().'/Value:'.$sValue.'+', $sValue);
|
||||
// later, we could imagine a detailed description in the title
|
||||
return "<span title=\"$sDescription\">".parent::GetAsHtml($sLabel)."</span>";
|
||||
@@ -1139,7 +1271,19 @@ class AttributeEnum extends AttributeString
|
||||
$aLocalizedValues[$sKey] = Dict::S('Class:'.$this->GetHostClass().'/Attribute:'.$this->GetCode().'/Value:'.$sKey, $sKey);
|
||||
}
|
||||
return $aLocalizedValues;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes the input value to align it with the values supported
|
||||
* by this type of attribute. In this case: turns empty strings into nulls
|
||||
* @param mixed $proposedValue The value to be set for the attribute
|
||||
* @return mixed The actual value that will be set
|
||||
*/
|
||||
public function MakeRealValue($proposedValue)
|
||||
{
|
||||
if ($proposedValue == '') return null;
|
||||
return parent::MakeRealValue($proposedValue);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1583,6 +1727,7 @@ class AttributeExternalKey extends AttributeDBFieldVoid
|
||||
public function MakeRealValue($proposedValue)
|
||||
{
|
||||
if (is_null($proposedValue)) return 0;
|
||||
if ($proposedValue === '') return 0;
|
||||
if (MetaModel::IsValidObject($proposedValue)) return $proposedValue->GetKey();
|
||||
return (int)$proposedValue;
|
||||
}
|
||||
|
||||
@@ -127,6 +127,33 @@ class CellStatus_Issue extends CellStatus_Modify
|
||||
}
|
||||
}
|
||||
|
||||
class CellStatus_SearchIssue extends CellStatus_Issue
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(null, null, null);
|
||||
}
|
||||
|
||||
public function GetDescription()
|
||||
{
|
||||
return 'No match';
|
||||
}
|
||||
}
|
||||
|
||||
class CellStatus_NullIssue extends CellStatus_Issue
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(null, null, null);
|
||||
}
|
||||
|
||||
public function GetDescription()
|
||||
{
|
||||
return 'Missing mandatory value';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class CellStatus_Ambiguous extends CellStatus_Issue
|
||||
{
|
||||
protected $m_iCount;
|
||||
@@ -247,6 +274,21 @@ class BulkChange
|
||||
return array($oReconFilter->ToOql(), $aKeys);
|
||||
}
|
||||
|
||||
// Returns true if the CSV data specifies that the external key must be left undefined
|
||||
protected function IsNullExternalKeySpec($aRowData, $sAttCode)
|
||||
{
|
||||
$oExtKey = MetaModel::GetAttributeDef($this->m_sClass, $sAttCode);
|
||||
foreach ($this->m_aExtKeys[$sAttCode] as $sForeignAttCode => $iCol)
|
||||
{
|
||||
// The foreign attribute is one of our reconciliation key
|
||||
if (strlen($aRowData[$iCol]) > 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function PrepareObject(&$oTargetObj, $aRowData, &$aErrors)
|
||||
{
|
||||
$aResults = array();
|
||||
@@ -260,36 +302,49 @@ class BulkChange
|
||||
// if (!array_key_exists($sAttCode, $this->m_aAttList)) continue;
|
||||
|
||||
$oExtKey = MetaModel::GetAttributeDef(get_class($oTargetObj), $sAttCode);
|
||||
$oReconFilter = new CMDBSearchFilter($oExtKey->GetTargetClass());
|
||||
foreach ($aKeyConfig as $sForeignAttCode => $iCol)
|
||||
|
||||
if ($this->IsNullExternalKeySpec($aRowData, $sAttCode))
|
||||
{
|
||||
// The foreign attribute is one of our reconciliation key
|
||||
$oReconFilter->AddCondition($sForeignAttCode, $aRowData[$iCol], '=');
|
||||
$aResults[$iCol] = new CellStatus_Void($aRowData[$iCol]);
|
||||
}
|
||||
$oExtObjects = new CMDBObjectSet($oReconFilter);
|
||||
switch($oExtObjects->Count())
|
||||
{
|
||||
case 0:
|
||||
foreach ($aKeyConfig as $sForeignAttCode => $iCol)
|
||||
{
|
||||
$aResults[$iCol] = new CellStatus_Void($aRowData[$iCol]);
|
||||
}
|
||||
if ($oExtKey->IsNullAllowed())
|
||||
{
|
||||
$oTargetObj->Set($sAttCode, $oExtKey->GetNullValue());
|
||||
$aResults[$sAttCode]= new CellStatus_Issue(null, $oTargetObj->Get($sAttCode), 'Object not found');
|
||||
$aResults[$sAttCode]= new CellStatus_Void($oExtKey->GetNullValue());
|
||||
}
|
||||
else
|
||||
{
|
||||
$aErrors[$sAttCode] = "Object not found";
|
||||
$aResults[$sAttCode]= new CellStatus_Issue(null, $oTargetObj->Get($sAttCode), 'Object not found');
|
||||
$aErrors[$sAttCode] = "Null not allowed";
|
||||
$aResults[$sAttCode]= new CellStatus_Issue(null, $oTargetObj->Get($sAttCode), 'Null not allowed');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$oReconFilter = new CMDBSearchFilter($oExtKey->GetTargetClass());
|
||||
foreach ($aKeyConfig as $sForeignAttCode => $iCol)
|
||||
{
|
||||
// The foreign attribute is one of our reconciliation key
|
||||
$oReconFilter->AddCondition($sForeignAttCode, $aRowData[$iCol], '=');
|
||||
$aResults[$iCol] = new CellStatus_Void($aRowData[$iCol]);
|
||||
}
|
||||
$oExtObjects = new CMDBObjectSet($oReconFilter);
|
||||
switch($oExtObjects->Count())
|
||||
{
|
||||
case 0:
|
||||
$aErrors[$sAttCode] = "Object not found";
|
||||
$aResults[$sAttCode]= new CellStatus_SearchIssue();
|
||||
break;
|
||||
case 1:
|
||||
// Do change the external key attribute
|
||||
$oForeignObj = $oExtObjects->Fetch();
|
||||
$oTargetObj->Set($sAttCode, $oForeignObj->GetKey());
|
||||
break;
|
||||
default:
|
||||
$aErrors[$sAttCode] = "Found ".$oExtObjects->Count()." matches";
|
||||
$aResults[$sAttCode]= new CellStatus_Ambiguous($oTargetObj->Get($sAttCode), $oExtObjects->Count(), $oReconFilter->ToOql());
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
// Do change the external key attribute
|
||||
$oForeignObj = $oExtObjects->Fetch();
|
||||
$oTargetObj->Set($sAttCode, $oForeignObj->GetKey());
|
||||
break;
|
||||
default:
|
||||
$aErrors[$sAttCode] = "Found ".$oExtObjects->Count()." matches";
|
||||
$aResults[$sAttCode]= new CellStatus_Ambiguous($oTargetObj->Get($sAttCode), $oExtObjects->Count(), $oReconFilter->ToOql());
|
||||
}
|
||||
|
||||
// Report
|
||||
@@ -461,7 +516,24 @@ class BulkChange
|
||||
public function Process(CMDBChange $oChange = null)
|
||||
{
|
||||
// Note: $oChange can be null, in which case the aim is to check what would be done
|
||||
|
||||
|
||||
// Debug...
|
||||
//
|
||||
if (false)
|
||||
{
|
||||
echo "<pre>\n";
|
||||
echo "Attributes:\n";
|
||||
print_r($this->m_aAttList);
|
||||
echo "ExtKeys:\n";
|
||||
print_r($this->m_aExtKeys);
|
||||
echo "Reconciliation:\n";
|
||||
print_r($this->m_aReconcilKeys);
|
||||
//echo "Data:\n";
|
||||
//print_r($this->m_aData);
|
||||
echo "</pre>\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Compute the results
|
||||
//
|
||||
$aResult = array();
|
||||
@@ -474,22 +546,38 @@ class BulkChange
|
||||
$valuecondition = null;
|
||||
if (array_key_exists($sAttCode, $this->m_aExtKeys))
|
||||
{
|
||||
// The value has to be found or verified
|
||||
list($sQuery, $aMatches) = $this->ResolveExternalKey($aRowData, $sAttCode, $aResult[$iRow]);
|
||||
|
||||
if (count($aMatches) == 1)
|
||||
if ($this->IsNullExternalKeySpec($aRowData, $sAttCode))
|
||||
{
|
||||
$oRemoteObj = reset($aMatches); // first item
|
||||
$valuecondition = $oRemoteObj->GetKey();
|
||||
$aResult[$iRow][$sAttCode] = new CellStatus_Void($oRemoteObj->GetKey());
|
||||
}
|
||||
elseif (count($aMatches) == 0)
|
||||
{
|
||||
$aResult[$iRow][$sAttCode] = new CellStatus_Issue(null, null, 'object not found');
|
||||
}
|
||||
$oExtKey = MetaModel::GetAttributeDef($this->m_sClass, $sAttCode);
|
||||
if ($oExtKey->IsNullAllowed())
|
||||
{
|
||||
$valuecondition = $oExtKey->GetNullValue();
|
||||
$aResult[$iRow][$sAttCode] = new CellStatus_Void($oExtKey->GetNullValue());
|
||||
}
|
||||
else
|
||||
{
|
||||
$aResult[$iRow][$sAttCode] = new CellStatus_NullIssue();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$aResult[$iRow][$sAttCode] = new CellStatus_Ambiguous(null, count($aMatches), $sQuery);
|
||||
// The value has to be found or verified
|
||||
list($sQuery, $aMatches) = $this->ResolveExternalKey($aRowData, $sAttCode, $aResult[$iRow]);
|
||||
|
||||
if (count($aMatches) == 1)
|
||||
{
|
||||
$oRemoteObj = reset($aMatches); // first item
|
||||
$valuecondition = $oRemoteObj->GetKey();
|
||||
$aResult[$iRow][$sAttCode] = new CellStatus_Void($oRemoteObj->GetKey());
|
||||
}
|
||||
elseif (count($aMatches) == 0)
|
||||
{
|
||||
$aResult[$iRow][$sAttCode] = new CellStatus_SearchIssue();
|
||||
}
|
||||
else
|
||||
{
|
||||
$aResult[$iRow][$sAttCode] = new CellStatus_Ambiguous(null, count($aMatches), $sQuery);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -546,7 +634,10 @@ class BulkChange
|
||||
if (!array_key_exists($sAttCode, $aResult[$iRow]))
|
||||
{
|
||||
$aResult[$iRow][$sAttCode] = new CellStatus_Void('n/a');
|
||||
foreach ($aForeignAtts as $sForeignAttCode => $iCol)
|
||||
}
|
||||
foreach ($aForeignAtts as $sForeignAttCode => $iCol)
|
||||
{
|
||||
if (!array_key_exists($iCol, $aResult[$iRow]))
|
||||
{
|
||||
// The foreign attribute is one of our reconciliation key
|
||||
$aResult[$iRow][$iCol] = new CellStatus_Void($aRowData[$iCol]);
|
||||
|
||||
@@ -110,6 +110,14 @@ class Config
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
),
|
||||
'session_name' => array(
|
||||
'type' => 'string',
|
||||
'description' => 'The name of the cookie used to store the PHP session id',
|
||||
'default' => 'iTop',
|
||||
'value' => '',
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => true,
|
||||
),
|
||||
);
|
||||
|
||||
public function IsProperty($sPropCode)
|
||||
@@ -263,6 +271,8 @@ class Config
|
||||
'../dictionaries/es_cr.dictionary.itop.core.php', // Support for Spanish (from Costa Rica)
|
||||
'../dictionaries/de.dictionary.itop.ui.php', // Support for German
|
||||
'../dictionaries/de.dictionary.itop.core.php', // Support for German
|
||||
'../dictionaries/pt_br.dictionary.itop.ui.php', // Support for Brazilian Portuguese
|
||||
'../dictionaries/pt_br.dictionary.itop.core.php', // Support for Brazilian Portuguese
|
||||
);
|
||||
|
||||
foreach($this->m_aSettings as $sPropCode => $aSettingInfo)
|
||||
|
||||
@@ -400,7 +400,8 @@ abstract class DBObject
|
||||
$aAvailableFields = array();
|
||||
foreach ($aExtKeyFriends as $sDispAttCode => $oExtField)
|
||||
{
|
||||
$aAvailableFields[$oExtField->GetExtAttCode()] = $oExtField->GetAsHTML($this->Get($oExtField->GetCode()));
|
||||
// $aAvailableFields[$oExtField->GetExtAttCode()] = $oExtField->GetAsHTML($this->Get($oExtField->GetCode()));
|
||||
$aAvailableFields[$oExtField->GetExtAttCode()] = $this->Get($oExtField->GetCode());
|
||||
}
|
||||
|
||||
$sTargetClass = $oAtt->GetTargetClass(EXTKEY_ABSOLUTE);
|
||||
@@ -669,6 +670,8 @@ abstract class DBObject
|
||||
// a displayable error is returned
|
||||
public function DoCheckToWrite()
|
||||
{
|
||||
$this->DoComputeValues();
|
||||
|
||||
$this->m_aCheckIssues = array();
|
||||
|
||||
foreach(MetaModel::ListAttributeDefs(get_class($this)) as $sAttCode=>$oAttDef)
|
||||
|
||||
@@ -722,11 +722,25 @@ class DBObjectSearch
|
||||
}
|
||||
elseif ($oExpression instanceof ListOqlExpression)
|
||||
{
|
||||
return new ListExpression($oExpression->GetItems());
|
||||
$aItems = array();
|
||||
foreach ($oExpression->GetItems() as $oItemExpression)
|
||||
{
|
||||
$aItems[] = $this->OQLExpressionToCondition($sQuery, $oItemExpression, $aClassAliases);
|
||||
}
|
||||
return new ListExpression($aItems);
|
||||
}
|
||||
elseif ($oExpression instanceof FunctionOqlExpression)
|
||||
{
|
||||
return new FunctionExpression($oExpression->GetVerb(), $oExpression->GetArgs());
|
||||
$aArgs = array();
|
||||
foreach ($oExpression->GetArgs() as $oArgExpression)
|
||||
{
|
||||
$aArgs[] = $this->OQLExpressionToCondition($sQuery, $oArgExpression, $aClassAliases);
|
||||
}
|
||||
return new FunctionExpression($oExpression->GetVerb(), $aArgs);
|
||||
}
|
||||
elseif ($oExpression instanceof IntervalOqlExpression)
|
||||
{
|
||||
return new IntervalExpression($oExpression->GetValue(), $oExpression->GetUnit());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -860,6 +874,7 @@ class DBObjectSearch
|
||||
}
|
||||
$aSelected[$sClassToSelect] = $aAliases[$sClassToSelect];
|
||||
}
|
||||
$oResultFilter->m_aClasses = $aAliases;
|
||||
$oResultFilter->SetSelectedClasses($aSelected);
|
||||
|
||||
$oConditionTree = $oOqlQuery->GetCondition();
|
||||
|
||||
@@ -128,6 +128,13 @@ class Dict
|
||||
{
|
||||
return $aDefaultDictionary[$sStringCode];
|
||||
}
|
||||
// Attempt to find the string in english
|
||||
//
|
||||
$aDefaultDictionary = self::$m_aData['EN US'];
|
||||
if (array_key_exists($sStringCode, $aDefaultDictionary))
|
||||
{
|
||||
return $aDefaultDictionary[$sStringCode];
|
||||
}
|
||||
// Could not find the string...
|
||||
//
|
||||
switch (self::$m_iErrorMode)
|
||||
|
||||
@@ -1619,7 +1619,7 @@ abstract class MetaModel
|
||||
$oConditionTree = $oFilter->GetCriteria();
|
||||
|
||||
$oKPI = new ExecutionKPI();
|
||||
$oSelect = self::MakeQuery($oFilter->GetSelectedClasses(), $oConditionTree, $aClassAliases, $aTableAliases, $aTranslation, $oFilter);
|
||||
$oSelect = self::MakeQuery($oFilter->GetSelectedClasses(), $oConditionTree, $aClassAliases, $aTableAliases, $aTranslation, $oFilter, array(), array(), true /* main query */);
|
||||
$oKPI->ComputeStats('MakeQuery (select)', $sOqlQuery);
|
||||
|
||||
self::$m_aQueryStructCache[$sOqlId] = clone $oSelect;
|
||||
@@ -1734,7 +1734,7 @@ abstract class MetaModel
|
||||
$aClassAliases = array();
|
||||
$aTableAliases = array();
|
||||
$oConditionTree = $oFilter->GetCriteria();
|
||||
$oSelect = self::MakeQuery($oFilter->GetSelectedClasses(), $oConditionTree, $aClassAliases, $aTableAliases, $aTranslation, $oFilter);
|
||||
$oSelect = self::MakeQuery($oFilter->GetSelectedClasses(), $oConditionTree, $aClassAliases, $aTableAliases, $aTranslation, $oFilter, array(), array(), true /* main query */);
|
||||
$aScalarArgs = array_merge(self::PrepareQueryArguments($aArgs), $oFilter->GetInternalParams());
|
||||
return $oSelect->RenderDelete($aScalarArgs);
|
||||
}
|
||||
@@ -1746,12 +1746,12 @@ abstract class MetaModel
|
||||
$aClassAliases = array();
|
||||
$aTableAliases = array();
|
||||
$oConditionTree = $oFilter->GetCriteria();
|
||||
$oSelect = self::MakeQuery($oFilter->GetSelectedClasses(), $oConditionTree, $aClassAliases, $aTableAliases, $aTranslation, $oFilter, array(), $aValues);
|
||||
$oSelect = self::MakeQuery($oFilter->GetSelectedClasses(), $oConditionTree, $aClassAliases, $aTableAliases, $aTranslation, $oFilter, array(), $aValues, true /* main query */);
|
||||
$aScalarArgs = array_merge(self::PrepareQueryArguments($aArgs), $oFilter->GetInternalParams());
|
||||
return $oSelect->RenderUpdate($aScalarArgs);
|
||||
}
|
||||
|
||||
private static function MakeQuery($aSelectedClasses, &$oConditionTree, &$aClassAliases, &$aTableAliases, &$aTranslation, DBObjectSearch $oFilter, $aExpectedAtts = array(), $aValues = array())
|
||||
private static function MakeQuery($aSelectedClasses, &$oConditionTree, &$aClassAliases, &$aTableAliases, &$aTranslation, DBObjectSearch $oFilter, $aExpectedAtts = array(), $aValues = array(), $bIsMainQuery = false)
|
||||
{
|
||||
// Note: query class might be different than the class of the filter
|
||||
// -> this occurs when we are linking our class to an external class (referenced by, or pointing to)
|
||||
@@ -1909,7 +1909,7 @@ abstract class MetaModel
|
||||
|
||||
// Translate the conditions... and go
|
||||
//
|
||||
if ($bIsOnQueriedClass)
|
||||
if ($bIsMainQuery)
|
||||
{
|
||||
$oConditionTranslated = $oConditionTree->Translate($aTranslation);
|
||||
$oSelectBase->SetCondition($oConditionTranslated);
|
||||
@@ -3007,7 +3007,7 @@ abstract class MetaModel
|
||||
$sRemoteTable = self::DBGetTable($sRemoteClass);
|
||||
$sRemoteKey = self::DBGetKey($sRemoteClass);
|
||||
|
||||
$aCols = $oKeyAttDef->GetSQLExpressions(); // Workaround a PHP bug: sometimes issuing a Notice if invoking current(somefunc())
|
||||
$aCols = $oAttDef->GetSQLExpressions(); // Workaround a PHP bug: sometimes issuing a Notice if invoking current(somefunc())
|
||||
$sExtKeyField = current($aCols); // get the first column for an external key
|
||||
|
||||
// Note: a class/table may have an external key on itself
|
||||
@@ -3054,7 +3054,7 @@ abstract class MetaModel
|
||||
{
|
||||
$sExpectedValues = implode(",", CMDBSource::Quote(array_keys($aAllowedValues), true));
|
||||
|
||||
$aCols = $oKeyAttDef->GetSQLExpressions(); // Workaround a PHP bug: sometimes issuing a Notice if invoking current(somefunc())
|
||||
$aCols = $oAttDef->GetSQLExpressions(); // Workaround a PHP bug: sometimes issuing a Notice if invoking current(somefunc())
|
||||
$sMyAttributeField = current($aCols); // get the first column for the moment
|
||||
$sDefaultValue = $oAttDef->GetDefaultValue();
|
||||
$sSelWrongRecs = "SELECT DISTINCT maintable.`$sKeyField` AS id FROM `$sTable` AS maintable WHERE maintable.`$sMyAttributeField` NOT IN ($sExpectedValues)";
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
}
|
||||
|
||||
.ac_loading {
|
||||
background: white url('indicator.gif') right center no-repeat;
|
||||
background: white url('../images/indicator.gif') right center no-repeat;
|
||||
}
|
||||
|
||||
.ac_odd {
|
||||
|
||||
@@ -172,6 +172,19 @@ td a.no-arrow:hover {
|
||||
padding-left:0px;
|
||||
background: inherit;
|
||||
}
|
||||
td a.mailto, td a.mailto:visited {
|
||||
text-decoration:none;
|
||||
color:#000000;
|
||||
padding-left:20px;
|
||||
background: url(../images/mail.png) no-repeat left;
|
||||
}
|
||||
td a.mailto:hover {
|
||||
text-decoration:underline;
|
||||
color:#EB8F00;
|
||||
padding-left:20px;
|
||||
background: url(../images/mail.png) no-repeat left;
|
||||
}
|
||||
|
||||
a.small_action {
|
||||
font-family: Tahoma, Verdana, Arial, Helvetica;
|
||||
font-size: 8pt;
|
||||
@@ -781,7 +794,7 @@ div#inner_menu {
|
||||
}
|
||||
div#logo {
|
||||
height: 70px;
|
||||
width: 100%;
|
||||
nowidth: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
div#logo div {
|
||||
@@ -797,7 +810,7 @@ div#logo div {
|
||||
#global-search {
|
||||
height: 55px;
|
||||
float: right;
|
||||
background: url(../images/banner-search.png) no-repeat left;
|
||||
background: url(../images/banner-search.png) no-repeat;
|
||||
nopadding-top: 15px;
|
||||
text-align: right;
|
||||
overflow-y: hidden;
|
||||
@@ -817,7 +830,7 @@ div#logo div {
|
||||
#global-search > form input[type="text"] {
|
||||
border: 0;
|
||||
height: 18px;
|
||||
width: 180px;E8FFD3
|
||||
width: 180px;
|
||||
padding-top: 4;
|
||||
background: transparent;
|
||||
}
|
||||
@@ -856,4 +869,21 @@ div.footer{
|
||||
#SearchResultsToAdd table.listResults tbody {
|
||||
height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
tr.row_unchanged td {
|
||||
border-bottom: 1px #ccc solid;
|
||||
padding: 2px;
|
||||
}
|
||||
.wizContainer table tr.row_error td {
|
||||
border-bottom: 1px #ccc solid;
|
||||
background-color: #fdd;
|
||||
padding: 2px;
|
||||
}
|
||||
tr.row_modified td {
|
||||
border-bottom: 1px #ccc solid;
|
||||
padding: 2px;
|
||||
}
|
||||
tr.row_added td {
|
||||
border-bottom: 1px #ccc solid;
|
||||
padding: 2px;
|
||||
}
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:CMDBChange' => 'Change',
|
||||
'Class:CMDBChange+' => 'Changes Tracking',
|
||||
'Class:CMDBChange+' => 'Protokllierung der Changes',
|
||||
'Class:CMDBChange/Attribute:date' => 'Datum',
|
||||
'Class:CMDBChange/Attribute:date+' => 'Datum und Uhrzeit der Änderungen',
|
||||
'Class:CMDBChange/Attribute:userinfo' => 'Sonstige Informationen',
|
||||
@@ -47,8 +47,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
//
|
||||
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:CMDBChangeOp' => 'Change Operation',
|
||||
'Class:CMDBChangeOp+' => 'Change operations tracking',
|
||||
'Class:CMDBChangeOp' => 'Change-Operation',
|
||||
'Class:CMDBChangeOp+' => 'Protokoll der Change-Operation',
|
||||
'Class:CMDBChangeOp/Attribute:change' => 'Change',
|
||||
'Class:CMDBChangeOp/Attribute:change+' => 'Change',
|
||||
'Class:CMDBChangeOp/Attribute:date' => 'Datum',
|
||||
|
||||
@@ -121,33 +121,30 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
//
|
||||
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:URP_Users' => 'Benutzer',
|
||||
'Class:URP_Users+' => 'Benutzer und Berechtigungen',
|
||||
'Class:URP_Users/Attribute:userid' => 'Kontakt (Person)',
|
||||
'Class:URP_Users/Attribute:userid+' => 'Persönliche Details aus den Geschäftsdaten',
|
||||
'Class:URP_Users/Attribute:last_name' => 'Nachname',
|
||||
'Class:URP_Users/Attribute:last_name+' => 'Name des dazugehörigen Kontaktes',
|
||||
'Class:URP_Users/Attribute:first_name' => 'Vorname',
|
||||
'Class:URP_Users/Attribute:first_name+' => 'Vorname des dazugehörigen Kontaktes',
|
||||
'Class:URP_Users/Attribute:email' => 'Email-Adresse',
|
||||
'Class:URP_Users/Attribute:email+' => 'Email-Adresse des dazugehörigen Kontaktes',
|
||||
'Class:URP_Users/Attribute:login' => 'Loginname',
|
||||
'Class:URP_Users/Attribute:login+' => 'Benutzerkennung zur Identifizierung',
|
||||
'Class:URP_Users/Attribute:password' => 'Passwort',
|
||||
'Class:URP_Users/Attribute:password+' => 'Benutzerkennung zur Authentifizierung',
|
||||
'Class:URP_Users/Attribute:language' => 'Sprache',
|
||||
'Class:URP_Users/Attribute:language+' => 'Benutzersprache',
|
||||
'Class:URP_Users/Attribute:language/Value:EN US' => 'English',
|
||||
'Class:URP_Users/Attribute:language/Value:EN US+' => 'English U.S.',
|
||||
'Class:URP_Users/Attribute:language/Value:FR FR' => 'French',
|
||||
'Class:URP_Users/Attribute:language/Value:FR FR+' => 'FR FR',
|
||||
'Class:URP_Users/Attribute:language/Value:DE DE' => 'German',
|
||||
'Class:URP_Users/Attribute:language/Value:DE DE+' => 'DE DE',
|
||||
'Class:User' => 'Benutzer',
|
||||
'Class:User+' => 'Benutzer-Login',
|
||||
'Class:User/Attribute:finalclass' => 'Typ des Benutzerkontos',
|
||||
'Class:User/Attribute:finalclass+' => '',
|
||||
'Class:User/Attribute:contactid' => 'Kontakt (Person)',
|
||||
'Class:User/Attribute:contactid+' => 'Persönliche Details der Geschäftsdaten',
|
||||
'Class:User/Attribute:last_name' => 'Nachname',
|
||||
'Class:User/Attribute:last_name+' => 'Nachname des Kontaktes',
|
||||
'Class:User/Attribute:first_name' => 'Vorname',
|
||||
'Class:User/Attribute:first_name+' => 'Vorname des Kontaktes',
|
||||
'Class:User/Attribute:email' => 'Email-Adresse',
|
||||
'Class:User/Attribute:email+' => 'Email-Adresse des Kontaktes',
|
||||
'Class:User/Attribute:login' => 'Login',
|
||||
'Class:User/Attribute:login+' => 'Benutzer-Anmeldename',
|
||||
'Class:User/Attribute:language' => 'Sprache',
|
||||
'Class:User/Attribute:language+' => 'Benutzersprache',
|
||||
'Class:User/Attribute:language/Value:EN US' => 'English',
|
||||
'Class:User/Attribute:language/Value:EN US+' => 'English (U.S.)',
|
||||
'Class:User/Attribute:language/Value:FR FR' => 'French',
|
||||
'Class:User/Attribute:language/Value:FR FR+' => 'French (France)',
|
||||
'Class:User/Attribute:profile_list' => 'Profile',
|
||||
'Class:User/Attribute:profile_list+' => 'Rollen, Rechtemanagement für diese Personn',
|
||||
'Class:User/Attribute:allowed_org_list' => 'Zugelassenen Organisationen',
|
||||
'Class:User/Attribute:allowed_org_list+' => 'Der Endbenutzer ist berechtigt, die daten der folgenden Organisationen zu sehen. Wenn keine Organisation zu sehen ist, gibt es keine Beschränkung.',
|
||||
|
||||
'Class:User/Attribute:profile_list+' => 'Rollen, Rechtemanagement für diese Person',
|
||||
'Class:User/Attribute:allowed_org_list' => '',
|
||||
'Class:User/Attribute:allowed_org_list+' => 'Der Endbenutzer ist berechtigt, die Daten der folgenden Organisationen zu sehen. Wenn keine Organisation zu sehen ist, gibt es keine Beschränkung.',
|
||||
'Class:User/Error:LoginMustBeUnique' => 'Login-Namen müssen unterschiedlich sein - "%1s" benutzt diesen Login-Name bereits.',
|
||||
'Class:User/Error:AtLeastOneProfileIsNeeded' => 'Mindestens ein Profil muss diesem Benutzer zugewiesen sein.',
|
||||
));
|
||||
@@ -167,6 +164,26 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:URP_Profiles/Attribute:user_list+' => 'Personen, die diese Rolle haben',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_UserOrg
|
||||
//
|
||||
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:URP_UserOrg' => 'Benutzerorganisationen',
|
||||
'Class:URP_UserOrg+' => 'Zulässige Organisationen',
|
||||
'Class:URP_UserProfile/Attribute:userid' => 'Benutzer',
|
||||
'Class:URP_UserProfile/Attribute:userid+' => 'Benutzerkonto',
|
||||
'Class:URP_UserProfile/Attribute:userlogin' => 'Benutzer-Login',
|
||||
'Class:URP_UserProfile/Attribute:userlogin+' => 'Logindaten des Benutzers',
|
||||
'Class:URP_UserProfile/Attribute:allowed_org_id' => 'Organisation',
|
||||
'Class:URP_UserProfile/Attribute:allowed_org_id+' => 'Gestattete Organisation',
|
||||
'Class:URP_UserProfile/Attribute:allowed_org_name' => 'Organisation',
|
||||
'Class:URP_UserProfile/Attribute:allowed_org_name+' => 'Gestattete Organisation',
|
||||
'Class:URP_UserProfile/Attribute:reason' => 'Grund',
|
||||
'Class:URP_UserProfile/Attribute:reason+' => 'Erklären Sie, warum diese Person berechtigt ist, Zugriff auf die Daten der Organisation zu haben',
|
||||
));
|
||||
|
||||
|
||||
//
|
||||
// Class: URP_Dimensions
|
||||
//
|
||||
@@ -314,7 +331,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:WelcomeMenu:LeftBlock' => '<p>iTop ist ein ein vollständiges, ITIL- und webbasiertes IT-Service-Management-Tool (ITSM)</p>
|
||||
<ul>Es umfasst...
|
||||
<li>eine vollständige CMDB (Configuration Management Database), um das IT-Portfolio zu dokumentieren und zu managen,</li>
|
||||
<li>ein Incident Mangement-Modul, um alle Störfälle in der IT-Landschaft zu beobachten und diese zu kommunizieren,</li>
|
||||
<li>ein Incident Management-Modul, um alle Störfälle in der IT-Landschaft zu beobachten und diese zu kommunizieren,</li>
|
||||
<li>ein Change Management-Modul, um Änderungen der IT-Landschaft zu planen und zu beobachten,</li>
|
||||
<li>eine Datenbank mit bekannten Fehlern, um Zwischenfälle schneller anhand bekannter Problemlösungen zu beseitigen,</li>
|
||||
<li>ein Ausfall-Modul, um geplante Ausfälle zu dokumentieren und die betreffenden Kontakte zu informieren,</li>
|
||||
@@ -373,8 +390,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:Button:ResetPassword' => ' Passwort zurücksetzen ',
|
||||
|
||||
'UI:SearchToggle' => 'Suche',
|
||||
'UI:ClickToCreateNew' => 'Klicken Sie hier, um einen neuen %1$s zu erstellen',
|
||||
'UI:SearchFor_Class' => 'Suche nach Objekten: %1$',
|
||||
'UI:ClickToCreateNew' => 'Klicken Sie hier, um eine neues Objekt vom Typ %1$s zu erstellen',
|
||||
'UI:SearchFor_Class' => 'Suche nach Objekten vom Typ "%1$s"',
|
||||
'UI:NoObjectToDisplay' => 'Kein Objekt zur Anzeige vorhanden.',
|
||||
'UI:Error:MandatoryTemplateParameter_object_id' => 'Parameter object_id ist erforderlich, wenn link_attr verwendet wird. Überprüfen Sie die Defintion des Display-Templates.',
|
||||
'UI:Error:MandatoryTemplateParameter_target_attr' => 'Parameter target_attr ist erforderlich, wenn link_attr verwendet wird. Überprüfen Sie die Defintion des Display-Templates.',
|
||||
@@ -382,9 +399,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:Error:InvalidGroupByFields' => 'Ungültige Felder-Liste, um diese zu gruppieren von: "%1$s".',
|
||||
'UI:Error:UnsupportedStyleOfBlock' => 'Fehler: nicht unterstützter Blockform: "%1$s".',
|
||||
'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => 'Ungültige Link-Defintion: die Klasse der zu managenden Objekte: %1$s wurde nicht als externer Schlüssel in der Klasse %2$s gefunden.',
|
||||
'UI:Error:Object_Class_Id_NotFound' => 'Object: %1$s:%2$d wurde nicht gefunden.',
|
||||
'UI:Error:Object_Class_Id_NotFound' => 'Objekt: %1$s:%2$d wurde nicht gefunden.',
|
||||
'UI:Error:WizardCircularReferenceInDependencies' => 'Fehler: gegenseitige Beziehung in den Abhängigkeiten zwischen den Feldern, überprüfen Sie das Datenmodell.',
|
||||
'UI:Error:UploadedFileTooBig' => 'Die hochgeladene Datei ist zu groß. (Maximal erlaubte Dateigröße ist %1$s. Überprüfen Sie upload_max_filesize in der PHP-Konfiguration.',
|
||||
'UI:Error:UploadedFileTooBig' => 'Die hochgeladene Datei ist zu groß. (Maximal erlaubte Dateigröße ist %1$s. Überprüfen Sie upload_max_filesize und post_max_size in der PHP-Konfiguration.',
|
||||
'UI:Error:UploadedFileTruncated.' => 'Hochgeladene Datei wurde beschränkt!',
|
||||
'UI:Error:NoTmpDir' => 'Der temporäre Ordner ist nicht definiert.',
|
||||
'UI:Error:CannotWriteToTmp_Dir' => 'Nicht möglich, die tempöräre Datei auf die Festplatte zu speicher: upload_tmp_dir = "%1$s".',
|
||||
@@ -412,7 +429,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:GroupBy:Count+' => 'Anzahl der Elemente',
|
||||
'UI:CountOfObjects' => '%1$d Objekte, die das Kriterium erfüllen.',
|
||||
'UI_CountOfObjectsShort' => '%1$d Objekte.',
|
||||
'UI:NoObject_Class_ToDisplay' => 'Kein %1$s zur Anzeige',
|
||||
'UI:NoObject_Class_ToDisplay' => 'Kein Objekt vom Typ "%1$s" zur Anzeige vorhanden',
|
||||
'UI:History:LastModified_On_By' => 'Zuletzt verändert am %1$s von %2$s.',
|
||||
'UI:HistoryTab' => 'Verlauf',
|
||||
'UI:NotificationsTab' => 'Benachrichtigungen',
|
||||
@@ -562,7 +579,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:Schema:NullAllowed' => 'Null zugelassen',
|
||||
'UI:Schema:NullNotAllowed' => 'Null NICHT zugelassen',
|
||||
'UI:Schema:Attributes' => 'Attribute',
|
||||
'UI:Schema:AttributeCode' => 'Attribute-Code',
|
||||
'UI:Schema:AttributeCode' => 'Attribut-Code',
|
||||
'UI:Schema:AttributeCode+' => 'Interner Code des Attributes',
|
||||
'UI:Schema:Label' => 'Label',
|
||||
'UI:Schema:Label+' => 'Label des Attributes',
|
||||
@@ -618,10 +635,10 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:AddObjectsOf_Class_LinkedWith_Class_Instance' => 'Fügen Sie %1$s Objekte verbunden mit %2$s hinzu: %3$s',
|
||||
'UI:AddObjectsOf_Class_LinkedWith_Class' => 'Fügen Sie %1$s Objekte verbunden mit %2$s hinzu',
|
||||
'UI:ManageObjectsOf_Class_LinkedWith_Class_Instance' => 'Verwalten Sie %1$s Objekte verbunden mit %2$s: %3$s',
|
||||
'UI:AddLinkedObjectsOf_Class' => ' %1$se hinzufügen...',
|
||||
'UI:AddLinkedObjectsOf_Class' => ' %1$s hinzufügen...',
|
||||
'UI:RemoveLinkedObjectsOf_Class' => 'Entferne ausgewählte Objekte',
|
||||
'UI:Message:EmptyList:UseAdd' => 'Die Liste ist leer, benutzten Sie "Hinzufügen..." um Elemente hinzuzufügen.',
|
||||
'UI:Message:EmptyList:UseSearchForm' => 'Benutzen Sie das Suchformular oben, um nach hinzufügenbaren Objekten zu suchen.',
|
||||
'UI:Message:EmptyList:UseSearchForm' => 'Benutzen Sie das Suchformular oben, um nach hinzufügbaren Objekten zu suchen.',
|
||||
|
||||
'UI:Wizard:FinalStepTitle' => 'Letzter Schritt: Bestätigung',
|
||||
'UI:Title:DeletionOf_Object' => 'Löschung von %1$s',
|
||||
@@ -656,7 +673,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:WelcomeToITop' => 'Willkommen bei iTop',
|
||||
'UI:DetailsPageTitle' => 'iTop - %1$s - %2$s Details',
|
||||
'UI:ErrorPageTitle' => 'iTop - Fehler',
|
||||
'UI:ObjectDoesNotExist' => 'Entschuldigung, dies Objekt exisitert nicht oder Sie sind nicht berechtigt es einzusehen.',
|
||||
'UI:ObjectDoesNotExist' => 'Entschuldigung, dieses Objekt exisitert nicht oder Sie sind nicht berechtigt es einzusehen.',
|
||||
'UI:SearchResultsPageTitle' => 'iTop - Suchergebnisse',
|
||||
'UI:Search:NoSearch' => 'Nichts, wonach man suchen kann...',
|
||||
'UI:FullTextSearchTitle_Text' => 'Ergebnisse für "%1$s":',
|
||||
@@ -666,18 +683,18 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:ModificationTitle_Class_Object' => 'Änderungen von %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:ClonePageTitle_Object_Class' => 'iTop - Dupliziere %1$s - %2$s Änderung',
|
||||
'UI:CloneTitle_Class_Object' => 'Duplizieren von %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:CreationPageTitle_Class' => 'iTop - Erstellung einer neue %1$s ',
|
||||
'UI:CreationTitle_Class' => 'Erstellung einer neue %1$s',
|
||||
'UI:SelectTheTypeOf_Class_ToCreate' => 'Wählen Sie den Typ von %1$s aus, den Sie erstellen möchten:',
|
||||
'UI:CreationPageTitle_Class' => 'iTop - Erstellung eines neuen Objekts vom Typ "%1$s" ',
|
||||
'UI:CreationTitle_Class' => 'Erstellung eines neuen Objekts vom Typ "%1$s"',
|
||||
'UI:SelectTheTypeOf_Class_ToCreate' => 'Wählen Sie den Typ vom Objekt "%1$s" aus, den Sie erstellen möchten:',
|
||||
'UI:Class_Object_NotUpdated' => 'Keine Änderung festgestellt, %1$s (%2$s) wurde <strong>nicht</strong> modifiziert.',
|
||||
'UI:Class_Object_Updated' => '%1$s (%2$s) aktualisiert.',
|
||||
'UI:BulkDeletePageTitle' => 'iTop - Massenlöschung',
|
||||
'UI:BulkDeletePageTitle' => 'iTop - Massenlöschung von Objekten',
|
||||
'UI:BulkDeleteTitle' => 'Wählen Sie die Objekte aus, die Sie löschen möchten:',
|
||||
'UI:PageTitle:ObjectCreated' => 'iTop-Objekt wurde erstellt.',
|
||||
'UI:Title:Object_Of_Class_Created' => '%1$s - %2$s erstellt.',
|
||||
'UI:Apply_Stimulus_On_Object_In_State_ToTarget_State' => 'Anwenden von %1$s auf Objekt: %2$s in Status %3$s zu Zielstatus: %4$s.',
|
||||
'UI:PageTitle:FatalError' => 'iTop - Fataler Fehler',
|
||||
'UI:FatalErrorMessage' => 'Fataler Fehler, iTop kann nicht forfahren.',
|
||||
'UI:FatalErrorMessage' => 'Fataler Fehler! iTop kann leider nicht forfahren.',
|
||||
'UI:Error_Details' => 'Fehler: %1$s.',
|
||||
|
||||
'UI:PageTitle:ClassProjections' => 'iTop Benutzerverwaltung - Klassenabbildung',
|
||||
@@ -697,7 +714,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:UserManagement:Action:Modify+' => 'Erstellen und editieren (modifizieren) von Objekten',
|
||||
'UI:UserManagement:Action:Delete' => 'Löschen',
|
||||
'UI:UserManagement:Action:Delete+' => 'Objekte löschen',
|
||||
'UI:UserManagement:Action:BulkRead' => 'Massenlesen (Export)',
|
||||
'UI:UserManagement:Action:BulkRead' => 'Masseneinlesen (Export)',
|
||||
'UI:UserManagement:Action:BulkRead+' => 'Objekte massenhaft auflisten oder exportieren',
|
||||
'UI:UserManagement:Action:BulkModify' => 'Massenmodifikation',
|
||||
'UI:UserManagement:Action:BulkModify+' => 'Massenerstellung/-bearbeitung (CSV-Import)',
|
||||
@@ -718,7 +735,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:UserManagement:NoLifeCycleApplicable+' => 'Kein Lebenszyklus wurde für diese Klasse definiert.',
|
||||
'UI:UserManagement:GrantMatrix' => 'Zugriffsmatrix',
|
||||
'UI:UserManagement:LinkBetween_User_And_Profile' => 'Verbindung zwischen %1$s und %2$s',
|
||||
|
||||
'UI:UserManagement:LinkBetween_User_And_Org' => 'Verbindung zwischen %1$s und %2$s',
|
||||
'Menu:AdminTools' => 'Admin-Tools',
|
||||
'Menu:AdminTools+' => 'Administrationswerkzeuge',
|
||||
'Menu:AdminTools?' => 'Werkzeuge, die nur für Benutzer mit Adminstratorprofil zugänglich sind',
|
||||
@@ -853,13 +870,13 @@ Wenn Aktionen mit Trigger verknüpft sind, bekommt jede Aktion eine Auftragsnumm
|
||||
'UI:Deadline_Days_Hours_Minutes' => '%1$dTage %2$dStunden %3$dMinuten',
|
||||
'UI:Help' => 'Hilfe',
|
||||
'UI:PasswordConfirm' => '(Bestätigen)',
|
||||
'UI:BeforeAdding_Class_ObjectsSaveThisObject' => 'Bevor weitere Objekte vom Typ "%1$s" hinzugefügt werden, speichern Sie dieses Objekt.',
|
||||
'UI:DisplayThisMessageAtStartup' => 'Diese Meldung beim Start anzeigen',
|
||||
'UI:BeforeAdding_Class_ObjectsSaveThisObject' => 'Bevor weitere Objekte vom Typ "%1$s" hinzugefügt werden können, speichern Sie bitte dieses Objekt.',
|
||||
'UI:DisplayThisMessageAtStartup' => 'Diese Meldung beim Start immer anzeigen',
|
||||
'UI:RelationshipGraph' => 'Grafische Ansicht',
|
||||
'UI:RelationshipList' => 'Liste',
|
||||
|
||||
'Portal:Title' => 'iTop-Benutzerportal',
|
||||
'Portal:Refresh' => 'Erneuern',
|
||||
'Portal:Refresh' => 'Neu laden',
|
||||
'Portal:Back' => 'Zurück',
|
||||
'Portal:CreateNewRequest' => 'Einen neuen Request erstellen',
|
||||
'Portal:ChangeMyPassword' => 'Mein Passwort ändern',
|
||||
@@ -876,6 +893,8 @@ Wenn Aktionen mit Trigger verknüpft sind, bekommt jede Aktion eine Auftragsnumm
|
||||
'Portal:Button:CloseTicket' => 'Dieses Ticket schließen',
|
||||
'Portal:EnterYourCommentsOnTicket' => 'Geben Sie einen Kommentar zur Lösung dieses Tickets ein:',
|
||||
'Portal:ErrorNoContactForThisUser' => 'Fehler: der derzeitige Benutzer wurde nicht einem Kontakt oder einer Person zugewiesen. Bitte kontaktieren Sie Ihren Administrator.',
|
||||
|
||||
'Enum:Undefined' => 'Nicht definiert',
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -366,7 +366,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => 'Incorrect link definition: the class of objects to manage: %1$s was not found as an external key in the class %2$s',
|
||||
'UI:Error:Object_Class_Id_NotFound' => 'Object: %1$s:%2$d not found.',
|
||||
'UI:Error:WizardCircularReferenceInDependencies' => 'Error: Circular reference in the dependencies between the fields, check the data model.',
|
||||
'UI:Error:UploadedFileTooBig' => 'Uploaded file is too big. (Max allowed size is %1$s). Check you PHP configuration for upload_max_filesize.',
|
||||
'UI:Error:UploadedFileTooBig' => 'Uploaded file is too big. (Max allowed size is %1$s). Check you PHP configuration for upload_max_filesize and post_max_size.',
|
||||
'UI:Error:UploadedFileTruncated.' => 'Uploaded file has been truncated !',
|
||||
'UI:Error:NoTmpDir' => 'The temporary directory is not defined.',
|
||||
'UI:Error:CannotWriteToTmp_Dir' => 'Unable to write the temporary file to the disk. upload_tmp_dir = "%1$s".',
|
||||
@@ -861,6 +861,8 @@ When associated with a trigger, each action is given an "order" number, specifyi
|
||||
'Portal:Button:CloseTicket' => 'Close this ticket',
|
||||
'Portal:EnterYourCommentsOnTicket' => 'Enter your comments about the resolution of this ticket:',
|
||||
'Portal:ErrorNoContactForThisUser' => 'Error: the current user is not associated with a Contact/Person. Please contact your administrator.',
|
||||
|
||||
'Enum:Undefined' => 'Undefined',
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -375,7 +375,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => 'Incorrect link definition: the class of objects to manage: %1$s was not found as an external key in the class %2$s',
|
||||
'UI:Error:Object_Class_Id_NotFound' => 'Object: %1$s:%2$d not found.',
|
||||
'UI:Error:WizardCircularReferenceInDependencies' => 'Error: Circular reference in the dependencies between the fields, check the data model.',
|
||||
'UI:Error:UploadedFileTooBig' => 'Uploaded file is too big. (Max allowed size is %1$s. Check you PHP configuration for upload_max_filesize.',
|
||||
'UI:Error:UploadedFileTooBig' => 'Uploaded file is too big. (Max allowed size is %1$s. Check you PHP configuration for upload_max_filesize and post_max_size.',
|
||||
'UI:Error:UploadedFileTruncated.' => 'Uploaded file has been truncated !',
|
||||
'UI:Error:NoTmpDir' => 'The temporary directory is not defined.',
|
||||
'UI:Error:CannotWriteToTmp_Dir' => 'Unable to write the temporary file to the disk. upload_tmp_dir = "%1$s".',
|
||||
@@ -837,6 +837,8 @@ When associated with a trigger, each action is given an "order" number, specifyi
|
||||
'UI:Deadline_Days_Hours_Minutes' => '%1$dd %2$dh %3$dmin',
|
||||
'UI:Help' => 'Ayuda',
|
||||
'UI:PasswordConfirm' => '(Confirm)',
|
||||
|
||||
'Enum:Undefined' => 'Undefined',
|
||||
));
|
||||
|
||||
?>
|
||||
|
||||
@@ -368,7 +368,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => 'la définition du lien est incorrecte: la classe d\'objets à gérer: %1$s n\'est référencée par aucune clef externe de la classe %2$s',
|
||||
'UI:Error:Object_Class_Id_NotFound' => 'L\'objet: %1$s:%2$d est introuvable.',
|
||||
'UI:Error:WizardCircularReferenceInDependencies' => 'Erreur: Référence circulaire entre les dépendences entre champs, vérifiez le modèle de données.',
|
||||
'UI:Error:UploadedFileTooBig' => 'Le fichier téléchargé est trop gros. (La taille maximale autorisée est %1$s). Vérifiez la valeur de la variable upload_max_filesize dans la configuration PHP.',
|
||||
'UI:Error:UploadedFileTooBig' => 'Le fichier téléchargé est trop gros. (La taille maximale autorisée est %1$s). Vérifiez la valeur des variables upload_max_filesize et post_max_size dans la configuration PHP.',
|
||||
'UI:Error:UploadedFileTruncated.' => 'Le fichier téléchargé a été tronqué !',
|
||||
'UI:Error:NoTmpDir' => 'Il n\'y a aucun répertoire temporaire de défini.',
|
||||
'UI:Error:CannotWriteToTmp_Dir' => 'Impossible d\'écrire le fichier temporaire sur disque. upload_tmp_dir = "%1$s".',
|
||||
@@ -870,6 +870,8 @@ Lors de l\'association à un déclencheur, on attribue à chaque action un numé
|
||||
'Portal:Button:CloseTicket' => 'Clôre cette requête',
|
||||
'Portal:EnterYourCommentsOnTicket' => 'Vos commentaires à propos du traitement de cette requête:',
|
||||
'Portal:ErrorNoContactForThisUser' => 'Erreur: l\'utilisateur courant n\'est pas associé à une Personne/Contact. Contactez votre administrateur.',
|
||||
|
||||
'Enum:Undefined' => 'Non défini',
|
||||
));
|
||||
|
||||
?>
|
||||
|
||||
378
dictionaries/pt_br.dictionary.itop.core.php
Normal file
378
dictionaries/pt_br.dictionary.itop.core.php
Normal file
@@ -0,0 +1,378 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'core/cmdb'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: CMDBChange
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:CMDBChange' => 'Mudanças',
|
||||
'Class:CMDBChange+' => 'Monitoramento Mudanças',
|
||||
'Class:CMDBChange/Attribute:date' => 'data',
|
||||
'Class:CMDBChange/Attribute:date+' => 'data e hora que as mudanças tenham sido registradas.',
|
||||
'Class:CMDBChange/Attribute:userinfo' => 'misc. info',
|
||||
'Class:CMDBChange/Attribute:userinfo+' => 'Solicitante definido informação',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOp
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:CMDBChangeOp' => 'Operação Mudança',
|
||||
'Class:CMDBChangeOp+' => 'Controle Operação Mudança',
|
||||
'Class:CMDBChangeOp/Attribute:change' => 'mudanças',
|
||||
'Class:CMDBChangeOp/Attribute:change+' => 'mudanças',
|
||||
'Class:CMDBChangeOp/Attribute:date' => 'data',
|
||||
'Class:CMDBChangeOp/Attribute:date+' => 'data e hora das mudanças',
|
||||
'Class:CMDBChangeOp/Attribute:userinfo' => 'usuário',
|
||||
'Class:CMDBChangeOp/Attribute:userinfo+' => 'quem fez esta mudanças',
|
||||
'Class:CMDBChangeOp/Attribute:objclass' => 'classe objeto',
|
||||
'Class:CMDBChangeOp/Attribute:objclass+' => 'classe objeto',
|
||||
'Class:CMDBChangeOp/Attribute:objkey' => 'id objeto',
|
||||
'Class:CMDBChangeOp/Attribute:objkey+' => 'objeto',
|
||||
'Class:CMDBChangeOp/Attribute:finalclass' => 'tipo',
|
||||
'Class:CMDBChangeOp/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpCreate
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:CMDBChangeOpCreate' => 'objeto criado',
|
||||
'Class:CMDBChangeOpCreate+' => 'Controle criação objeto',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpDelete
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:CMDBChangeOpDelete' => 'objeto apagado',
|
||||
'Class:CMDBChangeOpDelete+' => 'Controle objeto eliminado',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttribute
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:CMDBChangeOpSetAttribute' => 'objeto alterado',
|
||||
'Class:CMDBChangeOpSetAttribute+' => 'Controle do objeto alterado',
|
||||
'Class:CMDBChangeOpSetAttribute/Attribute:attcode' => 'Atributo',
|
||||
'Class:CMDBChangeOpSetAttribute/Attribute:attcode+' => 'código da modificação',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeScalar
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:CMDBChangeOpSetAttributeScalar' => 'mudança propriedade',
|
||||
'Class:CMDBChangeOpSetAttributeScalar+' => 'controle da mudança propriedade do objeto',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:oldvalue' => 'Valor anterior',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:oldvalue+' => 'valores anteriores do atributo',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:newvalue' => 'Novo valor',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:newvalue+' => 'novo valor do atributo',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeBlob
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:CMDBChangeOpSetAttributeBlob' => 'mudança dado',
|
||||
'Class:CMDBChangeOpSetAttributeBlob+' => 'controle mudança dado',
|
||||
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata' => 'Dado anterior',
|
||||
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata+' => 'conteúdo anterior do atributo',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeText
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:CMDBChangeOpSetAttributeText' => 'mudança texto',
|
||||
'Class:CMDBChangeOpSetAttributeText+' => 'controle mudança texto',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata' => 'Dado anterior',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata+' => 'conteúdo anterior do atributo',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Event
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Event' => 'Log Eventos',
|
||||
'Class:Event+' => 'An application internal event',
|
||||
'Class:Event/Attribute:message' => 'mensagem',
|
||||
'Class:Event/Attribute:message+' => 'descrição curta do evento',
|
||||
'Class:Event/Attribute:date' => 'data',
|
||||
'Class:Event/Attribute:date+' => 'data e hora em que as mudanças tenham sido registadas',
|
||||
'Class:Event/Attribute:userinfo' => 'info usu´rio',
|
||||
'Class:Event/Attribute:userinfo+' => 'identificação do usuário queestava fazendo a ação e desencadeou este evento',
|
||||
'Class:Event/Attribute:finalclass' => 'tipo',
|
||||
'Class:Event/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventNotification
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:EventNotification' => 'Notificação evento',
|
||||
'Class:EventNotification+' => 'Trace of a notification that has been sent',
|
||||
'Class:EventNotification/Attribute:trigger_id' => 'Trigger',
|
||||
'Class:EventNotification/Attribute:trigger_id+' => 'conta usuário',
|
||||
'Class:EventNotification/Attribute:action_id' => 'usuário',
|
||||
'Class:EventNotification/Attribute:action_id+' => 'conta usuário',
|
||||
'Class:EventNotification/Attribute:object_id' => 'Objeto id',
|
||||
'Class:EventNotification/Attribute:object_id+' => 'objeto id (classe definida pela trigger ?)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventNotificationEmail
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:EventNotificationEmail' => 'Enviando evento Email',
|
||||
'Class:EventNotificationEmail+' => 'Controle de um email que foi enviado',
|
||||
'Class:EventNotificationEmail/Attribute:to' => 'Para',
|
||||
'Class:EventNotificationEmail/Attribute:to+' => 'Para',
|
||||
'Class:EventNotificationEmail/Attribute:cc' => 'CC',
|
||||
'Class:EventNotificationEmail/Attribute:cc+' => 'CC',
|
||||
'Class:EventNotificationEmail/Attribute:bcc' => 'BCC',
|
||||
'Class:EventNotificationEmail/Attribute:bcc+' => 'BCC',
|
||||
'Class:EventNotificationEmail/Attribute:from' => 'De',
|
||||
'Class:EventNotificationEmail/Attribute:from+' => 'Rementente da mensagem',
|
||||
'Class:EventNotificationEmail/Attribute:subject' => 'Assunto',
|
||||
'Class:EventNotificationEmail/Attribute:subject+' => 'Assunto',
|
||||
'Class:EventNotificationEmail/Attribute:body' => 'Corpo',
|
||||
'Class:EventNotificationEmail/Attribute:body+' => 'Corpo',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventIssue
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:EventIssue' => 'Emissão de evento',
|
||||
'Class:EventIssue+' => 'Controle da emissão (atenção, erros, etc.)',
|
||||
'Class:EventIssue/Attribute:issue' => 'Emissão',
|
||||
'Class:EventIssue/Attribute:issue+' => 'O que aconteceu?',
|
||||
'Class:EventIssue/Attribute:impact' => 'Impacto',
|
||||
'Class:EventIssue/Attribute:impact+' => 'Quais são as consequências?',
|
||||
'Class:EventIssue/Attribute:page' => 'Página',
|
||||
'Class:EventIssue/Attribute:page+' => 'HTTP ponto de entrada',
|
||||
'Class:EventIssue/Attribute:arguments_post' => 'Postados argumentos',
|
||||
'Class:EventIssue/Attribute:arguments_post+' => 'HTTP POST argumentos',
|
||||
'Class:EventIssue/Attribute:arguments_get' => 'URL argumentos',
|
||||
'Class:EventIssue/Attribute:arguments_get+' => 'HTTP GET argumentos',
|
||||
'Class:EventIssue/Attribute:callstack' => 'Callstack',
|
||||
'Class:EventIssue/Attribute:callstack+' => 'Call stack',
|
||||
'Class:EventIssue/Attribute:data' => 'Dado',
|
||||
'Class:EventIssue/Attribute:data+' => 'Mais informações',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventWebService
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:EventWebService' => 'Evento Web service',
|
||||
'Class:EventWebService+' => 'Controle chamado do web service',
|
||||
'Class:EventWebService/Attribute:verb' => 'Verb',
|
||||
'Class:EventWebService/Attribute:verb+' => 'Nome da operação',
|
||||
'Class:EventWebService/Attribute:result' => 'Resultado',
|
||||
'Class:EventWebService/Attribute:result+' => 'Visão geral successos/falhas',
|
||||
'Class:EventWebService/Attribute:log_info' => 'Info log',
|
||||
'Class:EventWebService/Attribute:log_info+' => 'Resultado info log',
|
||||
'Class:EventWebService/Attribute:log_warning' => 'Log atenção',
|
||||
'Class:EventWebService/Attribute:log_warning+' => 'Resultado Log atenção',
|
||||
'Class:EventWebService/Attribute:log_error' => 'Log erro',
|
||||
'Class:EventWebService/Attribute:log_error+' => 'Resultado log erro',
|
||||
'Class:EventWebService/Attribute:data' => 'Dado',
|
||||
'Class:EventWebService/Attribute:data+' => 'Resultado dado',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Action
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Action' => 'Personalizar Ação',
|
||||
'Class:Action+' => 'Ação definida usuário',
|
||||
'Class:Action/Attribute:name' => 'Nome',
|
||||
'Class:Action/Attribute:name+' => '',
|
||||
'Class:Action/Attribute:description' => 'Descrição',
|
||||
'Class:Action/Attribute:description+' => '',
|
||||
'Class:Action/Attribute:status' => 'Status',
|
||||
'Class:Action/Attribute:status+' => 'Em produção ou ?',
|
||||
'Class:Action/Attribute:status/Value:test' => 'Que está sendo testado',
|
||||
'Class:Action/Attribute:status/Value:test+' => 'Que está sendo testado',
|
||||
'Class:Action/Attribute:status/Value:enabled' => 'Em produção',
|
||||
'Class:Action/Attribute:status/Value:enabled+' => 'Em produção',
|
||||
'Class:Action/Attribute:status/Value:disabled' => 'Inativo',
|
||||
'Class:Action/Attribute:status/Value:disabled+' => 'Inativo',
|
||||
'Class:Action/Attribute:trigger_list' => 'Triggers relacionados',
|
||||
'Class:Action/Attribute:trigger_list+' => 'Triggers ligado a esta ação',
|
||||
'Class:Action/Attribute:finalclass' => 'Tipo',
|
||||
'Class:Action/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ActionNotification
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:ActionNotification' => 'Notificação',
|
||||
'Class:ActionNotification+' => 'Notificação (abstrato)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ActionEmail
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:ActionEmail' => 'Email notificação',
|
||||
'Class:ActionEmail+' => '',
|
||||
'Class:ActionEmail/Attribute:test_recipient' => 'Teste destino',
|
||||
'Class:ActionEmail/Attribute:test_recipient+' => 'Destinatário o status está como "Teste"',
|
||||
'Class:ActionEmail/Attribute:from' => 'De',
|
||||
'Class:ActionEmail/Attribute:from+' => 'Será enviado dentro do cabeçalho do email',
|
||||
'Class:ActionEmail/Attribute:reply_to' => 'Responder para',
|
||||
'Class:ActionEmail/Attribute:reply_to+' => 'Será enviado dentro do cabeçalho do email',
|
||||
'Class:ActionEmail/Attribute:to' => 'Para',
|
||||
'Class:ActionEmail/Attribute:to+' => 'Destinatário para o email',
|
||||
'Class:ActionEmail/Attribute:cc' => 'Cc',
|
||||
'Class:ActionEmail/Attribute:cc+' => 'Com cópia',
|
||||
'Class:ActionEmail/Attribute:bcc' => 'bcc',
|
||||
'Class:ActionEmail/Attribute:bcc+' => 'Com cópia oculta',
|
||||
'Class:ActionEmail/Attribute:subject' => 'assunto',
|
||||
'Class:ActionEmail/Attribute:subject+' => 'Título do email',
|
||||
'Class:ActionEmail/Attribute:body' => 'corpo',
|
||||
'Class:ActionEmail/Attribute:body+' => 'Conteúdo do email',
|
||||
'Class:ActionEmail/Attribute:importance' => 'importância',
|
||||
'Class:ActionEmail/Attribute:importance+' => 'Flag importância',
|
||||
'Class:ActionEmail/Attribute:importance/Value:low' => 'baixo',
|
||||
'Class:ActionEmail/Attribute:importance/Value:low+' => 'baixo',
|
||||
'Class:ActionEmail/Attribute:importance/Value:normal' => 'normal',
|
||||
'Class:ActionEmail/Attribute:importance/Value:normal+' => 'normal',
|
||||
'Class:ActionEmail/Attribute:importance/Value:high' => 'alto',
|
||||
'Class:ActionEmail/Attribute:importance/Value:high+' => 'alto',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Trigger
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Trigger' => 'Trigger',
|
||||
'Class:Trigger+' => 'Personalizar manipulador de eventos',
|
||||
'Class:Trigger/Attribute:description' => 'Descrição',
|
||||
'Class:Trigger/Attribute:description+' => 'uma linha descrição',
|
||||
'Class:Trigger/Attribute:action_list' => 'Ações desencadeadas',
|
||||
'Class:Trigger/Attribute:action_list+' => 'Ações executadas quando a Trigger é ativado',
|
||||
'Class:Trigger/Attribute:finalclass' => 'Tipo',
|
||||
'Class:Trigger/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnObject
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:TriggerOnObject' => 'Trigger (classe dependente)',
|
||||
'Class:TriggerOnObject+' => 'Trigger em uma determinada classe de objetos',
|
||||
'Class:TriggerOnObject/Attribute:target_class' => 'Alvo classe',
|
||||
'Class:TriggerOnObject/Attribute:target_class+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateChange
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:TriggerOnStateChange' => 'Trigger (em estato mudança)',
|
||||
'Class:TriggerOnStateChange+' => 'Trigger sobre a mudança de estado do objeto',
|
||||
'Class:TriggerOnStateChange/Attribute:state' => 'Estado',
|
||||
'Class:TriggerOnStateChange/Attribute:state+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateEnter
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:TriggerOnStateEnter' => 'Trigger (ao entrar em um estado)',
|
||||
'Class:TriggerOnStateEnter+' => 'Trigger sobre a mudança de estado do objeto - entrar',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateLeave
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:TriggerOnStateLeave' => 'Trigger (na saída de um estado)',
|
||||
'Class:TriggerOnStateLeave+' => 'Trigger sobre a mudança de estado do objeto - deixando',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnObjectCreate
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:TriggerOnObjectCreate' => 'Trigger (sobre a criação do objeto)',
|
||||
'Class:TriggerOnObjectCreate+' => 'Trigger sobre a criação do objeto de [uma classe filha de] uma determinada classe',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkTriggerAction
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkTriggerAction' => 'Ação/Trigger',
|
||||
'Class:lnkTriggerAction+' => 'Ligação entre uma trigger e uma ação',
|
||||
'Class:lnkTriggerAction/Attribute:action_id' => 'Ação',
|
||||
'Class:lnkTriggerAction/Attribute:action_id+' => 'Ação a ser executada',
|
||||
'Class:lnkTriggerAction/Attribute:action_name' => 'Ação',
|
||||
'Class:lnkTriggerAction/Attribute:action_name+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_id' => 'Trigger',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_id+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_name' => 'Trigger',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_name+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:order' => 'Ordem',
|
||||
'Class:lnkTriggerAction/Attribute:order+' => 'AAções executadas ordem',
|
||||
));
|
||||
|
||||
|
||||
?>
|
||||
842
dictionaries/pt_br.dictionary.itop.ui.php
Normal file
842
dictionaries/pt_br.dictionary.itop.ui.php
Normal file
@@ -0,0 +1,842 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'gui'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: menuNode
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:menuNode' => 'menuNode',
|
||||
'Class:menuNode+' => 'Menu principal configuracoes elementos',
|
||||
'Class:menuNode/Attribute:name' => 'Nome menu',
|
||||
'Class:menuNode/Attribute:name+' => 'Nome curto para este menu',
|
||||
'Class:menuNode/Attribute:label' => 'Descricao do menu',
|
||||
'Class:menuNode/Attribute:label+' => 'Descricao longa para este menu',
|
||||
'Class:menuNode/Attribute:hyperlink' => 'Hyperlink',
|
||||
'Class:menuNode/Attribute:hyperlink+' => 'Hyperlink para a página',
|
||||
'Class:menuNode/Attribute:icon_path' => 'Icones menu',
|
||||
'Class:menuNode/Attribute:icon_path+' => 'Caminho parra o icone do menu',
|
||||
'Class:menuNode/Attribute:template' => 'Modelo',
|
||||
'Class:menuNode/Attribute:template+' => 'Modelo HTML para ver',
|
||||
'Class:menuNode/Attribute:type' => 'Tipo',
|
||||
'Class:menuNode/Attribute:type+' => 'Tipo de menu',
|
||||
'Class:menuNode/Attribute:type/Value:application' => 'aplicacao',
|
||||
'Class:menuNode/Attribute:type/Value:application+' => 'aplicacao',
|
||||
'Class:menuNode/Attribute:type/Value:user' => 'usuario',
|
||||
'Class:menuNode/Attribute:type/Value:user+' => 'usuario',
|
||||
'Class:menuNode/Attribute:type/Value:administrator' => 'administrador',
|
||||
'Class:menuNode/Attribute:type/Value:administrator+' => 'administrador',
|
||||
'Class:menuNode/Attribute:rank' => 'Mostrar rank',
|
||||
'Class:menuNode/Attribute:rank+' => 'Ordem de classificação para exibir o menu',
|
||||
'Class:menuNode/Attribute:parent_id' => 'Item Menu principal',
|
||||
'Class:menuNode/Attribute:parent_id+' => 'Item Menu principal',
|
||||
'Class:menuNode/Attribute:parent_name' => 'Item Menu principal',
|
||||
'Class:menuNode/Attribute:parent_name+' => 'Item Menu principal',
|
||||
'Class:menuNode/Attribute:user_id' => 'Proprietario do menu',
|
||||
'Class:menuNode/Attribute:user_id+' => 'O usuário que possui este menu (menu para usuario definido)',
|
||||
));
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'application'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: AuditCategory
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:AuditCategory' => 'AuditCategory',
|
||||
'Class:AuditCategory+' => 'Uma seção dentro da auditoria global',
|
||||
'Class:AuditCategory/Attribute:name' => 'Nome categoria',
|
||||
'Class:AuditCategory/Attribute:name+' => 'Nome curto da categoria',
|
||||
'Class:AuditCategory/Attribute:description' => 'Descricao categoria auditoria',
|
||||
'Class:AuditCategory/Attribute:description+' => 'Descricao longa para a categoria auditoria',
|
||||
'Class:AuditCategory/Attribute:definition_set' => 'Definicao configuracao',
|
||||
'Class:AuditCategory/Attribute:definition_set+' => 'Expressão OQL que define o conjunto de objetos de auditoria',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: AuditRule
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:AuditRule' => 'AuditRule',
|
||||
'Class:AuditRule+' => 'A regra para verificar se há uma categoria de Auditoria dado',
|
||||
'Class:AuditRule/Attribute:name' => 'Nome regra',
|
||||
'Class:AuditRule/Attribute:name+' => 'Nome curto para a regra',
|
||||
'Class:AuditRule/Attribute:description' => 'Descricao regra auditoria',
|
||||
'Class:AuditRule/Attribute:description+' => 'Descricao longa para este regra auditoria',
|
||||
'Class:AuditRule/Attribute:query' => 'Executar consulta',
|
||||
'Class:AuditRule/Attribute:query+' => 'A expressão OQL a executar',
|
||||
'Class:AuditRule/Attribute:valid_flag' => 'Objetos validos?',
|
||||
'Class:AuditRule/Attribute:valid_flag+' => 'True se a regra retorna os objetos válido, false caso contrário',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:true' => 'verdadeiro',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:true+' => 'verdadeiro',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:false' => 'falso',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:false+' => 'falso',
|
||||
'Class:AuditRule/Attribute:category_id' => 'Categoria',
|
||||
'Class:AuditRule/Attribute:category_id+' => 'A categoria para esta regra',
|
||||
'Class:AuditRule/Attribute:category_name' => 'Categoria',
|
||||
'Class:AuditRule/Attribute:category_name+' => 'Nome da categoria para esta regra',
|
||||
));
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'addon/userrights'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: URP_Users
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:URP_Users' => 'Usuario',
|
||||
'Class:URP_Users+' => 'Usuarios e credenciais',
|
||||
'Class:URP_Users/Attribute:userid' => 'Contatos (pessoa)',
|
||||
'Class:URP_Users/Attribute:userid+' => 'Os dados pessoais a partir dos dados de negócio',
|
||||
'Class:URP_Users/Attribute:last_name' => 'Ultimo nome',
|
||||
'Class:URP_Users/Attribute:last_name+' => 'Nome do contato correspondente',
|
||||
'Class:URP_Users/Attribute:first_name' => 'Primeiro nome',
|
||||
'Class:URP_Users/Attribute:first_name+' => 'Primeiro nome do contato correspondente',
|
||||
'Class:URP_Users/Attribute:email' => 'Email',
|
||||
'Class:URP_Users/Attribute:email+' => 'Email do contato correspondente',
|
||||
'Class:URP_Users/Attribute:login' => 'Usuario',
|
||||
'Class:URP_Users/Attribute:login+' => 'identificação do usuário',
|
||||
'Class:URP_Users/Attribute:password' => 'Senha',
|
||||
'Class:URP_Users/Attribute:password+' => 'autenticação/senha usuário',
|
||||
'Class:URP_Users/Attribute:language' => 'Linguagem',
|
||||
'Class:URP_Users/Attribute:language+' => 'linguagem usuário',
|
||||
'Class:URP_Users/Attribute:language/Value:EN US' => 'Ingles',
|
||||
'Class:URP_Users/Attribute:language/Value:EN US+' => 'Ingles U.S.',
|
||||
'Class:URP_Users/Attribute:language/Value:FR FR' => 'Frances',
|
||||
'Class:URP_Users/Attribute:language/Value:FR FR+' => 'FR FR',
|
||||
'Class:URP_Users/Attribute:language/Value:PT BR' => 'Brazilian',
|
||||
'Class:URP_Users/Attribute:language/Value:PT BR+' => 'PT BR',
|
||||
'Class:URP_Users/Attribute:profile_list' => 'Profiles',
|
||||
'Class:URP_Users/Attribute:profile_list+' => 'Regras, permissao direitos para esta pessoa',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_Profiles
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:URP_Profiles' => 'Profile',
|
||||
'Class:URP_Profiles+' => 'Profile usuario',
|
||||
'Class:URP_Profiles/Attribute:name' => 'Nome',
|
||||
'Class:URP_Profiles/Attribute:name+' => 'Titulo',
|
||||
'Class:URP_Profiles/Attribute:description' => 'Descricao',
|
||||
'Class:URP_Profiles/Attribute:description+' => 'uma linha descricao',
|
||||
'Class:URP_Profiles/Attribute:user_list' => 'Usuarios',
|
||||
'Class:URP_Profiles/Attribute:user_list+' => 'pessoas possuem esta regra',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_Dimensions
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:URP_Dimensions' => 'dimensão',
|
||||
'Class:URP_Dimensions+' => 'dimensão aplicação',
|
||||
'Class:URP_Dimensions/Attribute:name' => 'Nome',
|
||||
'Class:URP_Dimensions/Attribute:name+' => 'label',
|
||||
'Class:URP_Dimensions/Attribute:description' => 'Descrição',
|
||||
'Class:URP_Dimensions/Attribute:description+' => 'one line description',
|
||||
'Class:URP_Dimensions/Attribute:type' => 'Tipo',
|
||||
'Class:URP_Dimensions/Attribute:type+' => 'nome classe ou tipo dado (unidade projetada)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_UserProfile
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:URP_UserProfile' => 'Usuario para profile',
|
||||
'Class:URP_UserProfile+' => 'profiles usuario',
|
||||
'Class:URP_UserProfile/Attribute:userid' => 'Usuario',
|
||||
'Class:URP_UserProfile/Attribute:userid+' => 'conta usuario',
|
||||
'Class:URP_UserProfile/Attribute:userlogin' => 'Login',
|
||||
'Class:URP_UserProfile/Attribute:userlogin+' => 'Login Usuario\'s',
|
||||
'Class:URP_UserProfile/Attribute:profileid' => 'Profile',
|
||||
'Class:URP_UserProfile/Attribute:profileid+' => 'profile utilizada',
|
||||
'Class:URP_UserProfile/Attribute:profile' => 'Profile',
|
||||
'Class:URP_UserProfile/Attribute:profile+' => 'Nome profile',
|
||||
'Class:URP_UserProfile/Attribute:reason' => 'Razao',
|
||||
'Class:URP_UserProfile/Attribute:reason+' => 'explicar porque este usuario teve ter esta regra',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ProfileProjection
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:URP_ProfileProjection' => 'profile_projection',
|
||||
'Class:URP_ProfileProjection+' => 'profile projections',
|
||||
'Class:URP_ProfileProjection/Attribute:dimensionid' => 'Dimension',
|
||||
'Class:URP_ProfileProjection/Attribute:dimensionid+' => 'application dimension',
|
||||
'Class:URP_ProfileProjection/Attribute:dimension' => 'Dimension',
|
||||
'Class:URP_ProfileProjection/Attribute:dimension+' => 'application dimension',
|
||||
'Class:URP_ProfileProjection/Attribute:profileid' => 'Profile',
|
||||
'Class:URP_ProfileProjection/Attribute:profileid+' => 'usage profile',
|
||||
'Class:URP_ProfileProjection/Attribute:profile' => 'Profile',
|
||||
'Class:URP_ProfileProjection/Attribute:profile+' => 'Profile name',
|
||||
'Class:URP_ProfileProjection/Attribute:value' => 'Value expression',
|
||||
'Class:URP_ProfileProjection/Attribute:value+' => 'OQL expression (using $user) | constant | | +attribute code',
|
||||
'Class:URP_ProfileProjection/Attribute:attribute' => 'Attribute',
|
||||
'Class:URP_ProfileProjection/Attribute:attribute+' => 'Target attribute code (optional)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ClassProjection
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:URP_ClassProjection' => 'class_projection',
|
||||
'Class:URP_ClassProjection+' => 'class projections',
|
||||
'Class:URP_ClassProjection/Attribute:dimensionid' => 'Dimension',
|
||||
'Class:URP_ClassProjection/Attribute:dimensionid+' => 'application dimension',
|
||||
'Class:URP_ClassProjection/Attribute:dimension' => 'Dimension',
|
||||
'Class:URP_ClassProjection/Attribute:dimension+' => 'application dimension',
|
||||
'Class:URP_ClassProjection/Attribute:class' => 'Class',
|
||||
'Class:URP_ClassProjection/Attribute:class+' => 'Target class',
|
||||
'Class:URP_ClassProjection/Attribute:value' => 'Value expression',
|
||||
'Class:URP_ClassProjection/Attribute:value+' => 'OQL expression (using $this) | constant | | +attribute code',
|
||||
'Class:URP_ClassProjection/Attribute:attribute' => 'Attribute',
|
||||
'Class:URP_ClassProjection/Attribute:attribute+' => 'Target attribute code (optional)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ActionGrant
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:URP_ActionGrant' => 'action_permission',
|
||||
'Class:URP_ActionGrant+' => 'permissões nas classes',
|
||||
'Class:URP_ActionGrant/Attribute:profileid' => 'Profile',
|
||||
'Class:URP_ActionGrant/Attribute:profileid+' => 'profiles usadas',
|
||||
'Class:URP_ActionGrant/Attribute:profile' => 'Profile',
|
||||
'Class:URP_ActionGrant/Attribute:profile+' => 'usage profile',
|
||||
'Class:URP_ActionGrant/Attribute:class' => 'Class',
|
||||
'Class:URP_ActionGrant/Attribute:class+' => 'Target class',
|
||||
'Class:URP_ActionGrant/Attribute:permission' => 'Permission',
|
||||
'Class:URP_ActionGrant/Attribute:permission+' => 'allowed or not allowed?',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:yes' => 'yes',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:yes+' => 'yes',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:no' => 'no',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:no+' => 'no',
|
||||
'Class:URP_ActionGrant/Attribute:action' => 'Action',
|
||||
'Class:URP_ActionGrant/Attribute:action+' => 'operations to perform on the given class',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_StimulusGrant
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:URP_StimulusGrant' => 'stimulus_permission',
|
||||
'Class:URP_StimulusGrant+' => 'permissions on stimilus in the life cycle of the object',
|
||||
'Class:URP_StimulusGrant/Attribute:profileid' => 'Profile',
|
||||
'Class:URP_StimulusGrant/Attribute:profileid+' => 'usage profile',
|
||||
'Class:URP_StimulusGrant/Attribute:profile' => 'Profile',
|
||||
'Class:URP_StimulusGrant/Attribute:profile+' => 'usage profile',
|
||||
'Class:URP_StimulusGrant/Attribute:class' => 'Class',
|
||||
'Class:URP_StimulusGrant/Attribute:class+' => 'Target class',
|
||||
'Class:URP_StimulusGrant/Attribute:permission' => 'Permission',
|
||||
'Class:URP_StimulusGrant/Attribute:permission+' => 'allowed or not allowed?',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:yes' => 'yes',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:yes+' => 'yes',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:no' => 'no',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:no+' => 'no',
|
||||
'Class:URP_StimulusGrant/Attribute:stimulus' => 'Stimulus',
|
||||
'Class:URP_StimulusGrant/Attribute:stimulus+' => 'stimulus code',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_AttributeGrant
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:URP_AttributeGrant' => 'attribute_permission',
|
||||
'Class:URP_AttributeGrant+' => 'permissions at the attributes level',
|
||||
'Class:URP_AttributeGrant/Attribute:actiongrantid' => 'Action grant',
|
||||
'Class:URP_AttributeGrant/Attribute:actiongrantid+' => 'action grant',
|
||||
'Class:URP_AttributeGrant/Attribute:attcode' => 'Attribute',
|
||||
'Class:URP_AttributeGrant/Attribute:attcode+' => 'attribute code',
|
||||
));
|
||||
|
||||
//
|
||||
// String from the User Interface: menu, messages, buttons, etc...
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Menu:WelcomeMenu' => 'Bem-vindo',
|
||||
'Menu:WelcomeMenu+' => 'Bem-vindo ao iTop',
|
||||
'Menu:WelcomeMenuPage' => 'Bem-vindo',
|
||||
'Menu:WelcomeMenuPage+' => 'Bem-vindo ao iTop',
|
||||
'UI:WelcomeMenu:Title' => 'Bem-vindo ao iTop',
|
||||
|
||||
'UI:WelcomeMenu:LeftBlock' => '<p>iTop é um completo, livre, portal IT.</p>
|
||||
<ul>Inclui:
|
||||
<li>completo CMDB (Configuration management database) documentar e gerenciar inventários IT.</li>
|
||||
<li>módulo Gerenciador Incidente para monitorar e comunicar-se sobre todas as questões que ocorrem na TI.</li>
|
||||
<li>módulo Gerenciador Mudanças/Alterações para planejar e monitorar mudanças/alterações no ambiente TI.</li>
|
||||
<li>base de dados com erros conhecidos para agilizar a solução de incidentes.</li>
|
||||
<li>módulo falha para documentar todas as interrupções planejadas e notificar os contatos adequados.</li>
|
||||
<li>painéis para obter rapidamente uma visão geral de TI.</li>
|
||||
</ul>
|
||||
<p>Todos os módulos podem ser configurados, passo a passo, cada um, independente dos outros..</p>',
|
||||
|
||||
'UI:WelcomeMenu:RightBlock' => '<p>iTop é um provedor de serviço, que permite gerenciar facilmente múltiplos clientes ou organizações.
|
||||
<ul>iTop, oferece um conjunto rico em recursos de processos de negócios que:
|
||||
<li>melhora a eficácia da gestão de TI</li>
|
||||
<li>melhora operações de TI</li>
|
||||
<li>melhora o desempenho da satisfação do cliente.</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>iTop é completamente aberto para ser integrado com infra-estrutura de IT atuais.</p>
|
||||
<p>
|
||||
<ul>Adopting this new generation of IT Operational portal will help you to:
|
||||
<li>Better manage a more and more complex IT environment.</li>
|
||||
<li>Implement ITIL processes at your own pace.</li>
|
||||
<li>Manage the most important asset of your IT: Documentation.</li>
|
||||
</ul>
|
||||
</p>',
|
||||
|
||||
|
||||
'UI:WelcomeMenu:AllOpenRequests' => 'Chamados Abertos: %1$d',
|
||||
'UI:WelcomeMenu:MyCalls' => 'Solicitações de usuários atribuído a mim',
|
||||
'UI:WelcomeMenu:OpenIncidents' => 'Incidentes Abertos: %1$d',
|
||||
'UI:WelcomeMenu:AllConfigItems' => 'Configuração Itens: %1$d',
|
||||
'UI:WelcomeMenu:MyIncidents' => 'Incidentes atribuídas a mim',
|
||||
|
||||
'UI:AllOrganizations' => ' Todas Organizações ',
|
||||
'UI:YourSearch' => 'Pesquisar',
|
||||
'UI:LoggedAsMessage' => 'Conectado como %1$s',
|
||||
'UI:LoggedAsMessage+Admin' => 'Conectado como %1$s (Administrador)',
|
||||
'UI:Button:Logoff' => 'Sair',
|
||||
'UI:Button:GlobalSearch' => 'Pesquisar',
|
||||
'UI:Button:Search' => ' Pesquisar ',
|
||||
'UI:Button:Query' => ' Consultar ',
|
||||
'UI:Button:Ok' => 'Ok',
|
||||
'UI:Button:Cancel' => 'Cancelar',
|
||||
'UI:Button:Apply' => 'Aplicar',
|
||||
'UI:Button:Back' => ' << Voltar ',
|
||||
'UI:Button:Next' => ' Proximo >> ',
|
||||
'UI:Button:Finish' => ' Finalizar ',
|
||||
'UI:Button:DoImport' => ' Executar para importar ! ',
|
||||
'UI:Button:Done' => ' Concluido ',
|
||||
'UI:Button:SimulateImport' => ' Simulate the Import ',
|
||||
'UI:Button:Test' => 'Testar!',
|
||||
'UI:Button:Evaluate' => ' Evaluate ',
|
||||
'UI:Button:AddObject' => ' Adicionar... ',
|
||||
'UI:Button:BrowseObjects' => ' Navegar... ',
|
||||
'UI:Button:Add' => ' Adicionar ',
|
||||
'UI:Button:AddToList' => ' << Adicionar ',
|
||||
'UI:Button:RemoveFromList' => ' Remover >> ',
|
||||
'UI:Button:FilterList' => ' Filtrar... ',
|
||||
'UI:Button:Create' => ' Criar ',
|
||||
'UI:Button:Delete' => ' Apagar ! ',
|
||||
'UI:Button:ChangePassword' => ' Alterar senha ',
|
||||
|
||||
'UI:SearchToggle' => 'Pesquisar',
|
||||
'UI:ClickToCreateNew' => 'Criar um(a) novo(a) %1$s',
|
||||
'UI:SearchFor_Class' => 'Pesquisa para %1$s objetos',
|
||||
'UI:NoObjectToDisplay' => 'Nenhum objeto encontrado.',
|
||||
'UI:Error:MandatoryTemplateParameter_object_id' => 'Parâmetro object_id é obrigatório quando link_attr é especificado. Verifique a definição do modelo.',
|
||||
'UI:Error:MandatoryTemplateParameter_target_attr' => 'Parâmetro target_attr é obrigatório quando link_attr é especificado. Verifique a definição do modelo.',
|
||||
'UI:Error:MandatoryTemplateParameter_group_by' => 'Parâmetro group_by é obrigatório. Verifique a definição do modelo.',
|
||||
'UI:Error:InvalidGroupByFields' => 'Inválido lista de campos para agrupar por: "%1$s".',
|
||||
'UI:Error:UnsupportedStyleOfBlock' => 'Erro: não suportado estilo de bloco: "%1$s".',
|
||||
'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => 'Incorreta definição link: a classe de objetos para gerenciar: %1$s não foi encontrado como uma chave externa na classe %2$s',
|
||||
'UI:Error:Object_Class_Id_NotFound' => 'Objeto: %1$s:%2$d não encontrado.',
|
||||
'UI:Error:WizardCircularReferenceInDependencies' => 'Erro: Referência circular nas dependências entre os campos, verifique o modelo de dados.',
|
||||
'UI:Error:UploadedFileTooBig' => 'O arquivo enviado é muito grande (Tamanho máximo permitido é %1$s. Verifique sua configuração do PHP para upload_max_filesize.',
|
||||
'UI:Error:UploadedFileTruncated.' => 'Envio de arquivo foi truncado!',
|
||||
'UI:Error:NoTmpDir' => 'O diretorio temporário não está definido.',
|
||||
'UI:Error:CannotWriteToTmp_Dir' => 'Desabilitado escrever o arquivo temporario no disco. upload_tmp_dir = "%1$s".',
|
||||
'UI:Error:UploadStoppedByExtension_FileName' => 'Upload parado por extensao. (Nome original arquivo = "%1$s").',
|
||||
'UI:Error:UploadFailedUnknownCause_Code' => 'Upload de arquivo falhou, causa desconhecida. (Erro codigo = "%1$s").',
|
||||
|
||||
'UI:Error:1ParametersMissing' => 'Erro: o seguinte parametro deve ser especificado para esta operacao: %1$s.',
|
||||
'UI:Error:2ParametersMissing' => 'Erro: os seguinte parametros devem ser especificados para esta operacao: %1$s e %2$s.',
|
||||
'UI:Error:3ParametersMissing' => 'Erro: os seguinte parametros devem ser especificados para esta operacao: %1$s, %2$s e %3$s.',
|
||||
'UI:Error:4ParametersMissing' => 'Erro: os seguinte parametros devem ser especificados para esta operacao: %1$s, %2$s, %3$s e %4$s.',
|
||||
'UI:Error:IncorrectOQLQuery_Message' => 'Erro: Consulta OQL incorreta: %1$s',
|
||||
'UI:Error:AnErrorOccuredWhileRunningTheQuery_Message' => 'Um erro ocorreu enquanto executava a consulta: %1$s',
|
||||
'UI:Error:ObjectAlreadyUpdated' => 'Erro: o objeto já foi atualizado.',
|
||||
'UI:Error:ObjectCannotBeUpdated' => 'Erro: objeto nao pode ser atualizado.',
|
||||
'UI:Error:ObjectsAlreadyDeleted' => 'Erro: objeto já pode ter sido eliminada!',
|
||||
'UI:Error:BulkDeleteNotAllowedOn_Class' => 'Permissão negado para executar uma exclusão em massa de objetos da classe %1$s',
|
||||
'UI:Error:DeleteNotAllowedOn_Class' => 'Permissão negado para apagar objeto da classe %1$s',
|
||||
'UI:Error:ObjectAlreadyCloned' => 'Erro: o objeto ja foi clonado!',
|
||||
'UI:Error:ObjectAlreadyCreated' => 'Erro: o objeto ja foi criado!',
|
||||
'UI:Error:Invalid_Stimulus_On_Object_In_State' => 'Erro: invalid stimulus "%1$s" on object %2$s in state "%3$s".',
|
||||
|
||||
|
||||
'UI:GroupBy:Count' => 'Contagem',
|
||||
'UI:GroupBy:Count+' => 'Número de elementos',
|
||||
'UI:CountOfObjects' => '%1$d objetos que correspondem aos criterios.',
|
||||
'UI:NoObject_Class_ToDisplay' => 'Nenhum %1$s para mostrar',
|
||||
'UI:History:LastModified_On_By' => 'Ultima modificacao de %1$s por %2$s.',
|
||||
'UI:HistoryTab' => 'Historico',
|
||||
'UI:History:Date' => 'Data',
|
||||
'UI:History:Date+' => 'Data da alteração',
|
||||
'UI:History:User' => 'Usuario',
|
||||
'UI:History:User+' => 'Usuario que fez alteração',
|
||||
'UI:History:Changes' => 'Alterações',
|
||||
'UI:History:Changes+' => 'Alterações feita no objeto',
|
||||
'UI:Loading' => 'Carregando...',
|
||||
'UI:Menu:Actions' => 'Ações',
|
||||
'UI:Menu:New' => 'Novo...',
|
||||
'UI:Menu:Add' => 'Adicionar...',
|
||||
'UI:Menu:Manage' => 'Gerencia...',
|
||||
'UI:Menu:EMail' => 'eMail',
|
||||
'UI:Menu:CSVExport' => 'Exportar CSV',
|
||||
'UI:Menu:Modify' => 'Modificar...',
|
||||
'UI:Menu:Delete' => 'Apagar...',
|
||||
'UI:Menu:Manage' => 'Gerencia...',
|
||||
'UI:Menu:BulkDelete' => 'Apagar...',
|
||||
'UI:UndefinedObject' => 'indefinido',
|
||||
'UI:Document:OpenInNewWindow:Download' => 'Abrir em nova janela: %1$s, Download: %2$s',
|
||||
'UI:SelectAllToggle+' => 'Selecionar / Deselecionar todos',
|
||||
'UI:TruncatedResults' => '%1$d objetos mostrados out of %2$d',
|
||||
'UI:DisplayAll' => 'Mostrar todos',
|
||||
'UI:CountOfResults' => '%1$d objeto(s)',
|
||||
'UI:ChangesLogTitle' => 'Alteracoes log (%1$d):',
|
||||
'UI:EmptyChangesLogTitle' => 'Alteracoes log esta limpo',
|
||||
'UI:SearchFor_Class_Objects' => 'Pesquisa para %1$s objetos',
|
||||
'UI:OQLQueryBuilderTitle' => 'Construir consulta OQL',
|
||||
'UI:OQLQueryTab' => 'Consulta OQL',
|
||||
'UI:SimpleSearchTab' => 'Pesquisa simples',
|
||||
'UI:Details+' => 'Detalhes',
|
||||
'UI:SearchValue:Any' => '* Qualquer *',
|
||||
'UI:SearchValue:Mixed' => '* mix *',
|
||||
'UI:SelectOne' => '-- selecione um --',
|
||||
'UI:Login:Welcome' => 'Bem-vindo ao iTop!',
|
||||
'UI:Login:IncorrectLoginPassword' => 'Usuario/senha incorreto(s), por favor, tente novamente.',
|
||||
'UI:Login:IdentifyYourself' => 'Identifique-se antes continuar...',
|
||||
'UI:Login:UserNamePrompt' => 'Nome usuario',
|
||||
'UI:Login:PasswordPrompt' => 'Senha',
|
||||
'UI:Login:ChangeYourPassword' => 'Alterar sua senha',
|
||||
'UI:Login:OldPasswordPrompt' => 'Senha antiga',
|
||||
'UI:Login:NewPasswordPrompt' => 'Nova senha',
|
||||
'UI:Login:RetypeNewPasswordPrompt' => 'Digite novamente a senha',
|
||||
'UI:Login:IncorrectOldPassword' => 'Erro: senha incorreta',
|
||||
'UI:LogOffMenu' => 'Sair',
|
||||
'UI:ChangePwdMenu' => 'Alterar senha...',
|
||||
'UI:Login:RetypePwdDoesNotMatch' => 'A nova senha nao confere!',
|
||||
'UI:Button:Login' => 'Enter iTop',
|
||||
'UI:Login:Error:AccessRestricted' => 'iTop accesso restrito. Por favor, contate o suporte.',
|
||||
'UI:CSVImport:MappingSelectOne' => '-- selecione um --',
|
||||
'UI:CSVImport:MappingNotApplicable' => '-- ignore este campo --',
|
||||
'UI:CSVImport:NoData' => 'Conjunto vazio de dados..., forneca alguns dados!',
|
||||
'UI:Title:DataPreview' => 'Visualizar dado',
|
||||
'UI:CSVImport:ErrorOnlyOneColumn' => 'Erro: Os dados contem apenas uma coluna. Sera que voce selecionou o separador adequado?',
|
||||
'UI:CSVImport:FieldName' => 'Campo %1$d',
|
||||
'UI:CSVImport:DataLine1' => 'Dado linha 1',
|
||||
'UI:CSVImport:DataLine2' => 'Dado linha 2',
|
||||
'UI:CSVImport:idField' => 'id (Chave primaria)',
|
||||
'UI:Title:BulkImport' => 'iTop - Importacao em massa',
|
||||
'UI:Title:BulkImport+' => 'CSV Assistente de Importacao',
|
||||
'UI:CSVImport:ClassesSelectOne' => '-- selecione um --',
|
||||
'UI:CSVImport:ErrorExtendedAttCode' => 'Erro interno: "%1$s" e um codigo incorreto, pois "%2$s" NAO e chave externa da classe "%3$s"',
|
||||
'UI:CSVImport:ObjectsWillStayUnchanged' => '%1$d objeto(s) permanecera inalterados.',
|
||||
'UI:CSVImport:ObjectsWillBeModified' => '%1$d objeto(s) sera modificado.',
|
||||
'UI:CSVImport:ObjectsWillBeAdded' => '%1$d objeto(s) sera adicionado.',
|
||||
'UI:CSVImport:ObjectsWillHaveErrors' => '%1$d objeto(s) tem erros.',
|
||||
'UI:CSVImport:ObjectsRemainedUnchanged' => '%1$d objeto(s) manteve-se inalterada.',
|
||||
'UI:CSVImport:ObjectsWereModified' => '%1$d objeto(s) foram modificados.',
|
||||
'UI:CSVImport:ObjectsWereAdded' => '%1$d objeto(s) foram adicionados.',
|
||||
'UI:CSVImport:ObjectsAddErrors' => '%1$d objeto(s) apresentam erros.',
|
||||
'UI:Title:CSVImportStep2' => 'Step 2 of 5: CSV opcoes dados',
|
||||
'UI:Title:CSVImportStep3' => 'Step 3 of 5: Mapeamento de dados',
|
||||
'UI:Title:CSVImportStep4' => 'Step 4 of 5: Simulacao Importacao',
|
||||
'UI:Title:CSVImportStep5' => 'Step 5 of 5: Importacao completado',
|
||||
'UI:CSVImport:LinesNotImported' => 'Linhas que nao pode ser carregadas:',
|
||||
'UI:CSVImport:LinesNotImported+' => 'As seguintes linhas nao foram importados, porque eles contem erros',
|
||||
'UI:CSVImport:SeparatorComma+' => ', (comma)',
|
||||
'UI:CSVImport:SeparatorSemicolon+' => '; (semicolon)',
|
||||
'UI:CSVImport:SeparatorTab+' => 'tab',
|
||||
'UI:CSVImport:SeparatorOther' => 'outros:',
|
||||
'UI:CSVImport:QualifierDoubleQuote+' => '" (aspa dupla)',
|
||||
'UI:CSVImport:QualifierSimpleQuote+' => '\' (simple quote)',
|
||||
'UI:CSVImport:QualifierOther' => 'outros:',
|
||||
'UI:CSVImport:TreatFirstLineAsHeader' => 'Tratar a primeira linha como um cabecalho (nome da coluna)',
|
||||
'UI:CSVImport:Skip_N_LinesAtTheBeginning' => 'Skip %1$s line(s) at the beginning of the file',
|
||||
'UI:CSVImport:CSVDataPreview' => 'CSV Data Preview',
|
||||
'UI:CSVImport:SelectFile' => 'Select the file to import:',
|
||||
'UI:CSVImport:Tab:LoadFromFile' => 'Load from a file',
|
||||
'UI:CSVImport:Tab:CopyPaste' => 'Copy and paste data',
|
||||
'UI:CSVImport:Tab:Templates' => 'Templates',
|
||||
'UI:CSVImport:PasteData' => 'Paste the data to import:',
|
||||
'UI:CSVImport:PickClassForTemplate' => 'Pick the template to download: ',
|
||||
'UI:CSVImport:SeparatorCharacter' => 'Separator character:',
|
||||
'UI:CSVImport:TextQualifierCharacter' => 'Text qualifier character',
|
||||
'UI:CSVImport:CommentsAndHeader' => 'Comments and header',
|
||||
'UI:CSVImport:SelectClass' => 'Select the class to import:',
|
||||
'UI:CSVImport:AdvancedMode' => 'Advanced mode',
|
||||
'UI:CSVImport:AdvancedMode+' => 'In advanced mode the "id" (primary key) of the objects can be used to update and rename objects.' .
|
||||
'However the column "id" (if present) can only be used as a search criteria and can not be combined with any other search criteria.',
|
||||
'UI:CSVImport:SelectAClassFirst' => 'To configure the mapping, select a class first.',
|
||||
'UI:CSVImport:HeaderFields' => 'Fields',
|
||||
'UI:CSVImport:HeaderMappings' => 'Mappings',
|
||||
'UI:CSVImport:HeaderSearch' => 'Search?',
|
||||
'UI:CSVImport:AlertIncompleteMapping' => 'Please select a mapping for every field.',
|
||||
'UI:CSVImport:AlertNoSearchCriteria' => 'Please select at least one search criteria',
|
||||
|
||||
'UI:UniversalSearchTitle' => 'iTop - Pesquisa universal',
|
||||
'UI:UniversalSearch:Error' => 'Erro: %1$s',
|
||||
'UI:UniversalSearch:LabelSelectTheClass' => 'Selecione a classe para pesquisa: ',
|
||||
|
||||
'UI:Audit:Title' => 'iTop - CMDB Auditoria',
|
||||
'UI:Audit:InteractiveAudit' => 'Interactive Audit',
|
||||
'UI:Audit:HeaderAuditRule' => 'Audit Rule',
|
||||
'UI:Audit:HeaderNbObjects' => '# Objects',
|
||||
'UI:Audit:HeaderNbErrors' => '# Errors',
|
||||
'UI:Audit:PercentageOk' => '% Ok',
|
||||
|
||||
'UI:RunQuery:Title' => 'iTop - OQL Query Evaluation',
|
||||
'UI:RunQuery:QueryExamples' => 'Query Examples',
|
||||
'UI:RunQuery:HeaderPurpose' => 'Purpose',
|
||||
'UI:RunQuery:HeaderPurpose+' => 'Explanation about the query',
|
||||
'UI:RunQuery:HeaderOQLExpression' => 'OQL Expression',
|
||||
'UI:RunQuery:HeaderOQLExpression+' => 'The query in OQL syntax',
|
||||
'UI:RunQuery:ExpressionToEvaluate' => 'Expression to evaluate: ',
|
||||
'UI:RunQuery:MoreInfo' => 'More information about the query: ',
|
||||
'UI:RunQuery:DevelopedQuery' => 'Redevelopped query expression: ',
|
||||
'UI:RunQuery:SerializedFilter' => 'Serialized filter: ',
|
||||
'UI:RunQuery:Error' => 'An error occured while running the query: %1$s',
|
||||
|
||||
'UI:Schema:Title' => 'iTop objects schema',
|
||||
'UI:Schema:CategoryMenuItem' => 'Category <b>%1$s</b>',
|
||||
'UI:Schema:Relationships' => 'Relationships',
|
||||
'UI:Schema:AbstractClass' => 'Abstract class: no object from this class can be instantiated.',
|
||||
'UI:Schema:NonAbstractClass' => 'Non abstract class: objects from this class can be instantiated.',
|
||||
'UI:Schema:ClassHierarchyTitle' => 'Class hierarchy',
|
||||
'UI:Schema:AllClasses' => 'All classes',
|
||||
'UI:Schema:ExternalKey_To' => 'External key to %1$s',
|
||||
'UI:Schema:Columns_Description' => 'Columns: <em>%1$s</em>',
|
||||
'UI:Schema:Default_Description' => 'Default: "%1$s"',
|
||||
'UI:Schema:NullAllowed' => 'Null Allowed',
|
||||
'UI:Schema:NullNotAllowed' => 'Null NOT Allowed',
|
||||
'UI:Schema:Attributes' => 'Attributes',
|
||||
'UI:Schema:AttributeCode' => 'Attribute Code',
|
||||
'UI:Schema:AttributeCode+' => 'Internal code of the attribute',
|
||||
'UI:Schema:Label' => 'Label',
|
||||
'UI:Schema:Label+' => 'Label of the attribute',
|
||||
'UI:Schema:Type' => 'Type',
|
||||
|
||||
'UI:Schema:Type+' => 'Data type of the attribute',
|
||||
'UI:Schema:Origin' => 'Origin',
|
||||
'UI:Schema:Origin+' => 'The base class in which this attribute is defined',
|
||||
'UI:Schema:Description' => 'Description',
|
||||
'UI:Schema:Description+' => 'Description of the attribute',
|
||||
'UI:Schema:AllowedValues' => 'Allowed values',
|
||||
'UI:Schema:AllowedValues+' => 'Restrictions on the possible values for this attribute',
|
||||
'UI:Schema:MoreInfo' => 'More info',
|
||||
'UI:Schema:MoreInfo+' => 'More information about the field defined in the database',
|
||||
'UI:Schema:SearchCriteria' => 'Search criteria',
|
||||
'UI:Schema:FilterCode' => 'Filter code',
|
||||
'UI:Schema:FilterCode+' => 'Code of this search criteria',
|
||||
'UI:Schema:FilterDescription' => 'Description',
|
||||
'UI:Schema:FilterDescription+' => 'Description of this search criteria',
|
||||
'UI:Schema:AvailOperators' => 'Available operators',
|
||||
'UI:Schema:AvailOperators+' => 'Possible operators for this search criteria',
|
||||
'UI:Schema:ChildClasses' => 'Child classes',
|
||||
'UI:Schema:ReferencingClasses' => 'Referencing classes',
|
||||
'UI:Schema:RelatedClasses' => 'Related classes',
|
||||
'UI:Schema:LifeCycle' => 'Life cycle',
|
||||
'UI:Schema:Triggers' => 'Triggers',
|
||||
'UI:Schema:Relation_Code_Description' => 'Relation <em>%1$s</em> (%2$s)',
|
||||
'UI:Schema:RelationDown_Description' => 'Down: %1$s',
|
||||
'UI:Schema:RelationUp_Description' => 'Up: %1$s',
|
||||
'UI:Schema:RelationPropagates' => '%1$s: propagate to %2$d levels, query: %3$s',
|
||||
'UI:Schema:RelationDoesNotPropagate' => '%1$s: does not propagates (%2$d levels), query: %3$s',
|
||||
'UI:Schema:Class_ReferencingClasses_From_By' => '%1$s is referenced by the class %2$s via the field %3$s',
|
||||
'UI:Schema:Class_IsLinkedTo_Class_Via_ClassAndAttribute' => '%1$s is linked to %2$s via %3$s::<em>%4$s</em>',
|
||||
'UI:Schema:Links:1-n' => 'Classes pointing to %1$s (1:n links):',
|
||||
'UI:Schema:Links:n-n' => 'Classes linked to %1$s (n:n links):',
|
||||
'UI:Schema:Links:All' => 'Graph of all related classes',
|
||||
'UI:Schema:NoLifeCyle' => 'There is no life cycle defined for this class.',
|
||||
'UI:Schema:LifeCycleTransitions' => 'Transitions',
|
||||
'UI:Schema:LifeCyleAttributeOptions' => 'Attribute options',
|
||||
'UI:Schema:LifeCycleHiddenAttribute' => 'Hidden',
|
||||
'UI:Schema:LifeCycleReadOnlyAttribute' => 'Read-only',
|
||||
'UI:Schema:LifeCycleMandatoryAttribute' => 'Mandatory',
|
||||
'UI:Schema:LifeCycleAttributeMustChange' => 'Must change',
|
||||
'UI:Schema:LifeCycleAttributeMustPrompt' => 'User will be prompted to change the value',
|
||||
'UI:Schema:LifeCycleEmptyList' => 'lista limpa',
|
||||
|
||||
'UI:LinksWidget:Autocomplete+' => 'Type the first 3 characters...',
|
||||
'UI:Combo:SelectValue' => '--- select a value ---',
|
||||
'UI:Label:SelectedObjects' => 'Objetos selecionados: ',
|
||||
'UI:Label:AvailableObjects' => 'Objetos disponíveis: ',
|
||||
'UI:Link_Class_Attributes' => '%1$s atributos',
|
||||
'UI:SelectAllToggle+' => 'Marque todos / Desmarque todos',
|
||||
'UI:AddObjectsOf_Class_LinkedWith_Class_Instance' => 'Adionar %1$s objetos ligados com %2$s: %3$s',
|
||||
'UI:ManageObjectsOf_Class_LinkedWith_Class_Instance' => 'Manage %1$s objects linked with %2$s: %3$s',
|
||||
'UI:AddLinkedObjectsOf_Class' => 'Adicionado %1$ss...',
|
||||
'UI:RemoveLinkedObjectsOf_Class' => 'Apagado objeto(s) selecionado(s)',
|
||||
'UI:Message:EmptyList:UseAdd' => 'A lista está limpa, use o ícone "Adicionar..." para adicionar elementos.',
|
||||
'UI:Message:EmptyList:UseSearchForm' => 'Use o formulário Pesquisa para pesquisar objetos a ser adicionado.',
|
||||
|
||||
'UI:Wizard:FinalStepTitle' => 'Passo Final: confirmação',
|
||||
'UI:Title:DeletionOf_Object' => 'Eliminação de %1$s',
|
||||
'UI:Title:BulkDeletionOf_Count_ObjectsOf_Class' => 'Bulk deletion of %1$d objects of class %2$s',
|
||||
'UI:Delete:NotAllowedToDelete' => 'Permissão negado para eliminar este objeto',
|
||||
'UI:Delete:NotAllowedToUpdate_Fields' => 'Permissão negado para atualizar o(s) seguinte(s) campo(s): %1$s',
|
||||
'UI:Error:NotEnoughRightsToDelete' => 'Este objeto não pode ser apagado pelo usuário não ter direitos administrativos',
|
||||
'UI:Error:CannotDeleteBecauseOfDepencies' => 'This object could not be deleted because some manual operations must be performed prior to that',
|
||||
'UI:Archive_User_OnBehalfOf_User' => '%1$s em nome de %2$s',
|
||||
'UI:Delete:AutomaticallyDeleted' => 'eliminado automaticamente',
|
||||
'UI:Delete:AutomaticResetOf_Fields' => 'reset automático dos campo(s): %1$s',
|
||||
'UI:Delete:CleaningUpRefencesTo_Object' => 'Limpar todas as referências a %1$s...',
|
||||
'UI:Delete:CleaningUpRefencesTo_Several_ObjectsOf_Class' => 'Limpando todas as referências ao objeto %1$d da classe %2$s...',
|
||||
'UI:Delete:Done+' => 'What was done...',
|
||||
'UI:Delete:_Name_Class_Deleted' => '%1$s - %2$s eliminado.',
|
||||
'UI:Delete:ConfirmDeletionOf_Name' => 'Eliminação de %1$s',
|
||||
'UI:Delete:ConfirmDeletionOf_Count_ObjectsOf_Class' => 'Eliminação do objeto %1$d da classe %2$s',
|
||||
'UI:Delete:ShouldBeDeletedAtomaticallyButNotAllowed' => 'Should be automaticaly deleted, but you are not allowed to do so',
|
||||
'UI:Delete:MustBeDeletedManuallyButNotAllowed' => 'Must be deleted manually - but you are not allowed to delete this object, please contact your application admin',
|
||||
'UI:Delete:WillBeDeletedAutomatically' => 'Será automaticamente excluído',
|
||||
'UI:Delete:MustBeDeletedManually' => 'Deve ser excluído manualmente',
|
||||
'UI:Delete:CannotUpdateBecause_Issue' => 'Devem ser atualizados automaticamente, mas: %1$s',
|
||||
'UI:Delete:WillAutomaticallyUpdate_Fields' => 'será automaticamente atualizado (reset: %1$s)',
|
||||
'UI:Delete:Count_Objects/LinksReferencing_Object' => '%1$d objects/links are referencing %2$s',
|
||||
'UI:Delete:Count_Objects/LinksReferencingTheObjects' => '%1$d objects/links are referencing some of the objects to be deleted',
|
||||
'UI:Delete:ReferencesMustBeDeletedToEnsureIntegrity' => 'To ensure Database integrity, any reference should be further eliminated',
|
||||
'UI:Delete:Consequence+' => 'What will be done',
|
||||
'UI:Delete:SorryDeletionNotAllowed' => 'Sorry, you are not allowed to delete this object, see the detailed explanations above',
|
||||
'UI:Delete:PleaseDoTheManualOperations' => 'Please perform the manual operations listed above prior to requesting the deletion of this object',
|
||||
'UI:Delect:Confirm_Object' => 'Deseja realmente apagar %1$s.',
|
||||
'UI:Delect:Confirm_Count_ObjectsOf_Class' => 'Por favor, confirme que deseja apagar o seguinte %1$d objetos da classe %2$s.',
|
||||
'UI:WelcomeToITop' => 'Bem-vindo ao iTop',
|
||||
'UI:DetailsPageTitle' => 'iTop - %1$s - %2$s detalhes',
|
||||
'UI:ErrorPageTitle' => 'iTop - Erro',
|
||||
'UI:ObjectDoesNotExist' => 'Desculpe, este objeto não existe (ou você não tem permissão para vê-lo).',
|
||||
'UI:SearchResultsPageTitle' => 'iTop - Pesquisa resultados',
|
||||
'UI:Search:NoSearch' => 'Nada para pesquisar',
|
||||
'UI:FullTextSearchTitle_Text' => 'Resultados para "%1$s":',
|
||||
'UI:Search:Count_ObjectsOf_Class_Found' => '%1$d objeto(s) da classe %2$s encontrado(s).',
|
||||
'UI:Search:NoObjectFound' => 'Nenhum objeto encontrado.',
|
||||
'UI:ModificationPageTitle_Object_Class' => 'iTop - %1$s - %2$s modificação',
|
||||
'UI:ModificationTitle_Class_Object' => 'Modificação de %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:ClonePageTitle_Object_Class' => 'iTop - Clone %1$s - %2$s modificação',
|
||||
'UI:CloneTitle_Class_Object' => 'Clone de %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:CreationPageTitle_Class' => 'iTop - Criação de um(a) novo(a) %1$s ',
|
||||
'UI:CreationTitle_Class' => 'Criação de um(a) novo(a) %1$s',
|
||||
'UI:SelectTheTypeOf_Class_ToCreate' => 'Selecione o tipo de %1$s a ser criado:',
|
||||
'UI:Class_Object_NotUpdated' => 'Nenhuma mudança detectada, %1$s (%2$s) <strong>não</strong> foi modificado.',
|
||||
'UI:Class_Object_Updated' => '%1$s (%2$s) atualizado.',
|
||||
'UI:BulkDeletePageTitle' => 'iTop - Excluir em massa',
|
||||
'UI:BulkDeleteTitle' => 'Marque os objetos que deseja excluir:',
|
||||
'UI:PageTitle:ObjectCreated' => 'iTop Objeto criado.',
|
||||
'UI:Title:Object_Of_Class_Created' => '%1$s - %2$s criado.',
|
||||
'UI:Apply_Stimulus_On_Object_In_State_ToTarget_State' => 'Applying %1$s on object: %2$s in state %3$s to target state: %4$s.',
|
||||
'UI:PageTitle:FatalError' => 'iTop - Erro fatal',
|
||||
'UI:FatalErrorMessage' => 'Erro fatal, não pode continuar.',
|
||||
'UI:Error_Details' => 'Erro: %1$s.',
|
||||
|
||||
'UI:PageTitle:ClassProjections' => 'iTop user management - class projections',
|
||||
'UI:PageTitle:ProfileProjections' => 'iTop user management - profile projections',
|
||||
'UI:UserManagement:Class' => 'Class',
|
||||
'UI:UserManagement:Class+' => 'Class of objects',
|
||||
'UI:UserManagement:ProjectedObject' => 'Object',
|
||||
'UI:UserManagement:ProjectedObject+' => 'Projected object',
|
||||
'UI:UserManagement:AnyObject' => '* any *',
|
||||
'UI:UserManagement:User' => 'User',
|
||||
'UI:UserManagement:User+' => 'User involved in the projection',
|
||||
'UI:UserManagement:Profile' => 'Profile',
|
||||
'UI:UserManagement:Profile+' => 'Profile in which the projection is specified',
|
||||
'UI:UserManagement:Action:Read' => 'Read',
|
||||
'UI:UserManagement:Action:Read+' => 'Read/display objects',
|
||||
'UI:UserManagement:Action:Modify' => 'Modify',
|
||||
'UI:UserManagement:Action:Modify+' => 'Create and edit (modify) objects',
|
||||
'UI:UserManagement:Action:Delete' => 'Delete',
|
||||
'UI:UserManagement:Action:Delete+' => 'Delete objects',
|
||||
'UI:UserManagement:Action:BulkRead' => 'Bulk Read (Export)',
|
||||
'UI:UserManagement:Action:BulkRead+' => 'List objects or export massively',
|
||||
'UI:UserManagement:Action:BulkModify' => 'Bulk Modify',
|
||||
'UI:UserManagement:Action:BulkModify+' => 'Massively create/edit (CSV import)',
|
||||
'UI:UserManagement:Action:BulkDelete' => 'Bulk Delete',
|
||||
'UI:UserManagement:Action:BulkDelete+' => 'Massively delete objects',
|
||||
'UI:UserManagement:Action:Stimuli' => 'Stimuli',
|
||||
'UI:UserManagement:Action:Stimuli+' => 'Allowed (compound) actions',
|
||||
'UI:UserManagement:Action' => 'Action',
|
||||
'UI:UserManagement:Action+' => 'Action performed by the user',
|
||||
'UI:UserManagement:TitleActions' => 'Actions',
|
||||
'UI:UserManagement:Permission' => 'Permission',
|
||||
'UI:UserManagement:Permission+' => 'User\'s permissions',
|
||||
'UI:UserManagement:Attributes' => 'Attributes',
|
||||
'UI:UserManagement:ActionAllowed:Yes' => 'Yes',
|
||||
'UI:UserManagement:ActionAllowed:No' => 'No',
|
||||
'UI:UserManagement:AdminProfile+' => 'Administrators have full read/write access to all objects in the database.',
|
||||
'UI:UserManagement:NoLifeCycleApplicable' => 'N/A',
|
||||
'UI:UserManagement:NoLifeCycleApplicable+' => 'No lifecycle has been defined for this class',
|
||||
'UI:UserManagement:GrantMatrix' => 'Grant Matrix',
|
||||
'UI:UserManagement:LinkBetween_User_And_Profile' => 'Link between %1$s and %2$s',
|
||||
|
||||
'Menu:AdminTools' => 'Ferramentas administrativa',
|
||||
'Menu:AdminTools+' => 'Ferramentas administrativa',
|
||||
'Menu:AdminTools?' => 'Ferramentas permitidas somente para usuário com profile administrador',
|
||||
|
||||
'UI:ChangeManagementMenu' => 'Gerenciamento Mudanças',
|
||||
'UI:ChangeManagementMenu+' => 'Gerenciamento Mudanças',
|
||||
'UI:ChangeManagementMenu:Title' => 'Visão geral Mudanças',
|
||||
'UI-ChangeManagementMenu-ChangesByType' => 'Mudanças por tipo',
|
||||
'UI-ChangeManagementMenu-ChangesByStatus' => 'Mudanças por status',
|
||||
'UI-ChangeManagementMenu-ChangesByWorkgroup' => 'Mudanças por grupo de trabalho',
|
||||
'UI-ChangeManagementMenu-ChangesNotYetAssigned' => 'Mudanças não atribuídas',
|
||||
|
||||
'UI:ConfigurationItemsMenu'=> 'Configuração Itens',
|
||||
'UI:ConfigurationItemsMenu+'=> 'Todos dispositivos',
|
||||
'UI:ConfigurationItemsMenu:Title' => 'Visão geral Configuração Itens',
|
||||
'UI-ConfigurationItemsMenu-ServersByCriticity' => 'Servidores por criticidade',
|
||||
'UI-ConfigurationItemsMenu-PCsByCriticity' => 'PCs por criticidade',
|
||||
'UI-ConfigurationItemsMenu-NWDevicesByCriticity' => 'Dispositivo de rede por criticidade',
|
||||
'UI-ConfigurationItemsMenu-ApplicationsByCriticity' => 'Aplicação por criticidade',
|
||||
|
||||
'UI:ConfigurationManagementMenu' => 'Gerenciamento Configuração',
|
||||
'UI:ConfigurationManagementMenu+' => 'Gerenciamento Configuração',
|
||||
'UI:ConfigurationManagementMenu:Title' => 'Visão geral Infra-estrutura',
|
||||
'UI-ConfigurationManagementMenu-InfraByType' => 'Objetos Infra-estrutura por tipo',
|
||||
'UI-ConfigurationManagementMenu-InfraByStatus' => 'Objetos Infra-estrutura por status',
|
||||
|
||||
'UI:ConfigMgmtMenuOverview:Title' => 'Painel para Gerenciamento Configuração',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIbyStatus' => 'Configuração Itens por status',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIByType' => 'Configuração Itens por tipo',
|
||||
|
||||
'UI:RequestMgmtMenuOverview:Title' => 'Painel para Gerenciamento de Pedido',
|
||||
'UI-RequestManagementOverview-RequestByService' => 'User Requests by service',
|
||||
'UI-RequestManagementOverview-RequestByPriority' => 'User Requests by priority',
|
||||
'UI-RequestManagementOverview-RequestUnassigned' => 'User Requests not yet assigned to an agent',
|
||||
|
||||
'UI:IncidentMgmtMenuOverview:Title' => 'Painel para Gerenciamento Incidentes',
|
||||
'UI-IncidentManagementOverview-IncidentByService' => 'Incidentes por serviço',
|
||||
'UI-IncidentManagementOverview-IncidentByPriority' => 'Incidentes por prioridade',
|
||||
'UI-IncidentManagementOverview-IncidentUnassigned' => 'Incidentes não atribuídos para agentes',
|
||||
|
||||
'UI:ChangeMgmtMenuOverview:Title' => 'Painel para Gerenciamento Mudanças',
|
||||
'UI-ChangeManagementOverview-ChangeByType' => 'Mudanças por tipo',
|
||||
'UI-ChangeManagementOverview-ChangeUnassigned' => 'Mudanças não atribuídos para agentes',
|
||||
'UI-ChangeManagementOverview-ChangeWithOutage' => 'Interrupções devido a mudanças',
|
||||
|
||||
'UI:ServiceMgmtMenuOverview:Title' => 'Painel para Gerenciamento Serviço',
|
||||
'UI-ServiceManagementOverview-CustomerContractToRenew' => 'Contratos de clientes deverão serem renovados em 30 dias',
|
||||
'UI-ServiceManagementOverview-ProviderContractToRenew' => 'Contratos de prestação a serem renovados em 30 dias',
|
||||
|
||||
'UI:ContactsMenu' => 'Contatos',
|
||||
'UI:ContactsMenu+' => 'Contatos',
|
||||
'UI:ContactsMenu:Title' => 'Visão global contatos',
|
||||
'UI-ContactsMenu-ContactsByLocation' => 'Contatos por Localização',
|
||||
'UI-ContactsMenu-ContactsByType' => 'Contatos por tipo',
|
||||
'UI-ContactsMenu-ContactsByStatus' => 'Contatos por status',
|
||||
|
||||
'Menu:CSVImportMenu' => 'Importacao CSV',
|
||||
'Menu:CSVImportMenu+' => 'Bulk creation or update',
|
||||
|
||||
'Menu:DataModelMenu' => 'Modelo dados',
|
||||
'Menu:DataModelMenu+' => 'Visao geral do Modelo dados',
|
||||
|
||||
'Menu:ExportMenu' => 'Exportar',
|
||||
'Menu:ExportMenu+' => 'Exportar o resultado de qualquer consulta em HTML, CSV or XML',
|
||||
|
||||
'Menu:NotificationsMenu' => 'Notificações',
|
||||
'Menu:NotificationsMenu+' => 'Configuração da notificações',
|
||||
'UI:NotificationsMenu:Title' => 'Configuração da <span class="hilite">Notificações</span>',
|
||||
'UI:NotificationsMenu:Help' => 'Ajuda',
|
||||
'UI:NotificationsMenu:HelpContent' => '<p>In iTop the notifications are fully customizable. They are based on two sets of objects: <i>triggers and actions</i>.</p>
|
||||
<p><i><b>Triggers</b></i> define when a notification will be executed. There are 3 types of triggers for covering 3 differents phases of an object life cycle:
|
||||
<ol>
|
||||
<li>the "OnCreate" triggers get executed when an object of the specified class is created</li>
|
||||
<li>the "OnStateEnter" triggers get executed before an object of the given class enters a specified state (coming from another state)</li>
|
||||
<li>the "OnStateLeave" triggers get executed when an object of the given class is leaving a specified state</li>
|
||||
</ol>
|
||||
</p>
|
||||
<p>
|
||||
<i><b>Actions</b></i> define the actions to be performed when the triggers execute. For now there is only one kind of action consisting in sending an email message.
|
||||
Such actions also define the template to be used for sending the email as well as the other parameters of the message like the recipients, importance, etc.
|
||||
</p>
|
||||
<p>A special page: <a href="../setup/email.test.php" target="_blank">email.test.php</a> is available for testing and troubleshooting your PHP mail configuration.</p>
|
||||
<p>To be executed, actions must be associated to triggers.
|
||||
When associated with a trigger, each action is given an "order" number, specifying in which order the actions are to be executed.</p>',
|
||||
'UI:NotificationsMenu:Triggers' => 'Triggers',
|
||||
'UI:NotificationsMenu:AvailableTriggers' => 'Triggers disponivel',
|
||||
'UI:NotificationsMenu:OnCreate' => 'Quando um objeto e criado',
|
||||
'UI:NotificationsMenu:OnStateEnter' => 'Quando um objeto entra em um determinado estado',
|
||||
'UI:NotificationsMenu:OnStateLeave' => 'Quando um objeto deixa um determinado estado',
|
||||
'UI:NotificationsMenu:Actions' => 'Acoes',
|
||||
'UI:NotificationsMenu:AvailableActions' => 'Acoes disponiveis',
|
||||
|
||||
'Menu:RunQueriesMenu' => 'Executar consultas',
|
||||
'Menu:RunQueriesMenu+' => 'Executar qualquer consulta',
|
||||
|
||||
'Menu:DataAdministration' => 'Administracao de dados',
|
||||
'Menu:DataAdministration+' => 'Administracao de dados',
|
||||
|
||||
'Menu:UniversalSearchMenu' => 'Pesquisa Universal',
|
||||
'Menu:UniversalSearchMenu+' => 'Pesquisa por nada...',
|
||||
|
||||
'Menu:ApplicationLogMenu' => 'Log de l\'aplicacao',
|
||||
'Menu:ApplicationLogMenu+' => 'Log de l\'aplicacao',
|
||||
'Menu:ApplicationLogMenu:Title' => 'Log de l\'aplicacao',
|
||||
|
||||
'Menu:UserManagementMenu' => 'Gerenciamento Usuario',
|
||||
'Menu:UserManagementMenu+' => 'Gerenciamento usuario',
|
||||
|
||||
'Menu:ProfilesMenu' => 'Profiles',
|
||||
'Menu:ProfilesMenu+' => 'Profiles',
|
||||
'Menu:ProfilesMenu:Title' => 'Profiles',
|
||||
|
||||
'Menu:UserAccountsMenu' => 'Contas usuarios',
|
||||
'Menu:UserAccountsMenu+' => 'Contas usuarios',
|
||||
'Menu:UserAccountsMenu:Title' => 'Contas usuarios',
|
||||
|
||||
'UI:iTopVersion:Short' => 'iTop versão %1$s',
|
||||
'UI:iTopVersion:Long' => 'iTop versão %1$s-%2$s built on %3$s',
|
||||
'UI:PropertiesTab' => 'Propriedades',
|
||||
|
||||
'UI:OpenDocumentInNewWindow_' => 'Abrir este documento em uma nova janela: %1$s',
|
||||
'UI:DownloadDocument_' => 'Baixar este documento: %1$s',
|
||||
'UI:Document:NoPreview' => 'Nã há visualização disponível para este tipo de documento',
|
||||
|
||||
'UI:DeadlineMissedBy_duration' => 'Perdido por %1$s',
|
||||
'UI:Deadline_LessThan1Min' => '< 1 min',
|
||||
'UI:Deadline_Minutes' => '%1$d min',
|
||||
'UI:Deadline_Hours_Minutes' => '%1$dh %2$dmin',
|
||||
'UI:Deadline_Days_Hours_Minutes' => '%1$dd %2$dh %3$dmin',
|
||||
'UI:Help' => 'Ajuda',
|
||||
));
|
||||
|
||||
|
||||
|
||||
?>
|
||||
BIN
images/mail.png
Normal file
BIN
images/mail.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 348 B |
@@ -154,7 +154,11 @@ function ValidateField(sFieldId, sPattern, bMandatory, sFormId, nullValue)
|
||||
{
|
||||
var bValid = true;
|
||||
var currentVal = $('#'+sFieldId).val();
|
||||
if (bMandatory && (currentVal == nullValue))
|
||||
if (currentVal == '$$NULL$$') // Convention to indicate a non-valid value since it may have to be passed as text
|
||||
{
|
||||
bValid = false;
|
||||
}
|
||||
else if (bMandatory && (currentVal == nullValue))
|
||||
{
|
||||
bValid = false;
|
||||
}
|
||||
@@ -248,3 +252,26 @@ function ValidatePasswordField(id, sFormId)
|
||||
$('#v_'+id).html(''); //<img src="../images/validation_ok.png" />');
|
||||
return true;
|
||||
}
|
||||
|
||||
// Called when filling an autocomplete field
|
||||
function OnAutoComplete(id, event, data, formatted)
|
||||
{
|
||||
if (data)
|
||||
{
|
||||
// A valid match was found: data[0] => label, data[1] => value
|
||||
$('#'+id).val(data[1]);
|
||||
$('#'+id).trigger('change');
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($('#label_'+id).val() == '')
|
||||
{
|
||||
$('#'+id).val(''); // Empty value
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#'+id).val('$$NULL$$'); // Convention: not a valid value
|
||||
}
|
||||
$('#'+id).trigger('change');
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,12 @@
|
||||
// JavaScript Document
|
||||
function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix)
|
||||
function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates)
|
||||
{
|
||||
this.id = id;
|
||||
this.iInputId = iInputId;
|
||||
this.sClass = sClass;
|
||||
this.sAttCode = sAttCode;
|
||||
this.sSuffix = sSuffix;
|
||||
this.bDuplicates = bDuplicates;
|
||||
var me = this;
|
||||
this.Init = function()
|
||||
{
|
||||
@@ -64,7 +65,8 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix)
|
||||
{
|
||||
var theMap = { sAttCode: me.sAttCode,
|
||||
iInputId: me.iInputId,
|
||||
sSuffix: me.sSuffix
|
||||
sSuffix: me.sSuffix,
|
||||
bDuplicates: me.bDuplicates
|
||||
}
|
||||
|
||||
// Gather the parameters from the search form
|
||||
@@ -112,6 +114,7 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix)
|
||||
var theMap = { sAttCode: me.sAttCode,
|
||||
iInputId: me.iInputId,
|
||||
sSuffix: me.sSuffix,
|
||||
bDuplicates: me.bDuplicates,
|
||||
'class': me.sClass
|
||||
}
|
||||
|
||||
|
||||
23
js/utils.js
23
js/utils.js
@@ -99,20 +99,24 @@ function UpdateFileName(id, sNewFileName)
|
||||
/**
|
||||
* Reload a search form for the specified class
|
||||
*/
|
||||
function ReloadSearchForm(divId, sClassName, sBaseClass)
|
||||
function ReloadSearchForm(divId, sClassName, sBaseClass, sContext)
|
||||
{
|
||||
var oDiv = $('#'+divId);
|
||||
oDiv.block();
|
||||
var oFormEvents = $('#'+divId+' form').data('events');
|
||||
var aSubmit = new Array();
|
||||
|
||||
// Save the submit handlers
|
||||
aSubmit = new Array();
|
||||
aSubmit = new Array();
|
||||
if ( (oFormEvents != null) && (oFormEvents.submit != undefined))
|
||||
{
|
||||
aSubmit = oFormEvents.submit;
|
||||
for(index = 0; index < oFormEvents.submit.length; index++)
|
||||
{
|
||||
aSubmit [index ] = { data:oFormEvents.submit[index].data, namespace:oFormEvents.submit[index].namespace, handler: oFormEvents.submit[index].handler};
|
||||
}
|
||||
}
|
||||
|
||||
$.post('ajax.render.php',
|
||||
$.post('ajax.render.php?'+sContext,
|
||||
{ operation: 'search_form', className: sClassName, baseClass: sBaseClass, currentId: divId },
|
||||
function(data) {
|
||||
oDiv.empty();
|
||||
@@ -177,3 +181,14 @@ function GetUserPreference(sPreferenceCode, sDefaultValue)
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check/uncheck a whole list of checkboxes
|
||||
*/
|
||||
function CheckAll(sSelector, bValue)
|
||||
{
|
||||
var value = bValue;
|
||||
$(sSelector).each( function() {
|
||||
this.checked = value;
|
||||
});
|
||||
}
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:UserLDAP' => 'LDAP-Benutzer',
|
||||
'Class:UserLDAP+' => 'Benutzer,der über LDP authenifiziert wird',
|
||||
'Class:UserLDAP+' => 'Benutzer,der über LDAP authenifiziert wird',
|
||||
'Class:UserLDAP/Attribute:password' => 'Passwort',
|
||||
'Class:UserLDAP/Attribute:password+' => 'Benutzerpasswort',
|
||||
));
|
||||
|
||||
@@ -25,6 +25,8 @@ SetupWebPage::AddModule(
|
||||
'dictionary' => array(
|
||||
'en.dict.itop-basic.php',
|
||||
'es_cr.dict.itop-basic.php',
|
||||
'fr.dict.itop-basic.php',
|
||||
'pt_br.dict.itop-basic.php',
|
||||
),
|
||||
'data.struct' => array(
|
||||
//'data.struct.itop-basic.xml',
|
||||
|
||||
51
modules/itop-basic-1.0.0/pt_br.dict.itop-basic.php
Normal file
51
modules/itop-basic-1.0.0/pt_br.dict.itop-basic.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
// Dictionnay conventions
|
||||
// Class:<class_name>
|
||||
// Class:<class_name>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>
|
||||
// Class:<class_name>/Attribute:<attribute_code>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>+
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'bizmodel'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
// Dictionnay conventions
|
||||
// Class:<class_name>
|
||||
// Class:<class_name>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>
|
||||
// Class:<class_name>/Attribute:<attribute_code>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>+
|
||||
|
||||
?>
|
||||
@@ -103,7 +103,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:Change/Attribute:creation_date+' => '',
|
||||
'Class:Change/Attribute:last_update' => 'Letzte Aktualisierung',
|
||||
'Class:Change/Attribute:last_update+' => '',
|
||||
'Class:Change/Attribute:end_date' => 'End date',
|
||||
'Class:Change/Attribute:end_date' => 'Enddatum',
|
||||
'Class:Change/Attribute:end_date+' => '',
|
||||
'Class:Change/Attribute:close_date' => 'Geschlossen',
|
||||
'Class:Change/Attribute:close_date+' => '',
|
||||
|
||||
@@ -118,7 +118,7 @@ abstract class Change extends Ticket
|
||||
'workgroup_id' => OPT_ATT_MANDATORY,
|
||||
'supervisor_group_id' => OPT_ATT_MANDATORY,
|
||||
'manager_group_id' => OPT_ATT_MANDATORY,
|
||||
'description' => OPT_ATT_READONLY,
|
||||
'description' => OPT_ATT_READONLY,
|
||||
'requestor_id' => OPT_ATT_READONLY,
|
||||
'title' => OPT_ATT_MANDATORY,
|
||||
),
|
||||
@@ -141,7 +141,7 @@ abstract class Change extends Ticket
|
||||
'agent_id' => OPT_ATT_MUSTCHANGE,
|
||||
'supervisor_id' => OPT_ATT_MUSTCHANGE,
|
||||
'manager_id' => OPT_ATT_MUSTCHANGE,
|
||||
'description' => OPT_ATT_READONLY,
|
||||
'description' => OPT_ATT_READONLY,
|
||||
'requestor_id' => OPT_ATT_READONLY,
|
||||
),
|
||||
)
|
||||
@@ -288,14 +288,18 @@ abstract class Change extends Ticket
|
||||
|
||||
public function ComputeValues()
|
||||
{
|
||||
$iKey = $this->GetKey();
|
||||
if ($iKey < 0)
|
||||
$sCurrRef = $this->Get('ref');
|
||||
if (strlen($sCurrRef) == 0)
|
||||
{
|
||||
// Object not yet in the Database
|
||||
$iKey = MetaModel::GetNextKey(get_class($this));
|
||||
$iKey = $this->GetKey();
|
||||
if ($iKey < 0)
|
||||
{
|
||||
// Object not yet in the Database
|
||||
$iKey = MetaModel::GetNextKey(get_class($this));
|
||||
}
|
||||
$sName = sprintf('C-%06d', $iKey);
|
||||
$this->Set('ref', $sName);
|
||||
}
|
||||
$sName = sprintf('C-%06d', $iKey);
|
||||
$this->Set('ref', $sName);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -311,12 +315,12 @@ abstract class Change extends Ticket
|
||||
case 'approved':
|
||||
case 'implemented':
|
||||
case 'monitored':
|
||||
$sIconName = self::MakeIconFromName('change-approved.png');
|
||||
$sIcon = self::MakeIconFromName('change-approved.png');
|
||||
break;
|
||||
|
||||
case 'rejected':
|
||||
case 'notapproved':
|
||||
$sIconName = self::MakeIconFromName('change-rejected.png');
|
||||
$sIcon = self::MakeIconFromName('change-rejected.png');
|
||||
break;
|
||||
|
||||
case 'closed':
|
||||
|
||||
@@ -29,6 +29,7 @@ SetupWebPage::AddModule(
|
||||
'fr.dict.itop-change-mgmt.php',
|
||||
'es_cr.dict.itop-change-mgmt.php',
|
||||
'de.dict.itop-change-mgmt.php',
|
||||
'pt_br.dict.itop-change-mgmt.php',
|
||||
),
|
||||
'data.struct' => array(
|
||||
//'data.struct.itop-change-mgmt.xml',
|
||||
|
||||
347
modules/itop-change-mgmt-1.0.0/pt_br.dict.itop-change-mgmt.php
Normal file
347
modules/itop-change-mgmt-1.0.0/pt_br.dict.itop-change-mgmt.php
Normal file
@@ -0,0 +1,347 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Menu:ChangeManagement' => 'Gerenciamento Mudanças',
|
||||
'Menu:Change:Overview' => 'Visão geral',
|
||||
'Menu:Change:Overview+' => '',
|
||||
'Menu:NewChange' => 'Nova Mudança',
|
||||
'Menu:NewChange+' => 'Nova Mudança',
|
||||
'Menu:SearchChanges' => 'Pesquisa para Mudança',
|
||||
'Menu:SearchChanges+' => 'Pesquisa para Mudança',
|
||||
'Menu:Change:Shortcuts' => 'Atalhos',
|
||||
'Menu:Change:Shortcuts+' => '',
|
||||
'Menu:WaitingAcceptance' => 'Mudanças à espera de aceitação',
|
||||
'Menu:WaitingAcceptance+' => '',
|
||||
'Menu:WaitingApproval' => 'Mudanças à espera de aprovação',
|
||||
'Menu:WaitingApproval+' => '',
|
||||
'Menu:Changes' => 'Mudanças abertas',
|
||||
'Menu:Changes+' => '',
|
||||
'Menu:MyChanges' => 'Mudanças atribuída a mim',
|
||||
'Menu:MyChanges+' => 'Mudanças atribuída para mim (como Agente)',
|
||||
));
|
||||
|
||||
// Dictionnay conventions
|
||||
// Class:<class_name>
|
||||
// Class:<class_name>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>
|
||||
// Class:<class_name>/Attribute:<attribute_code>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>+
|
||||
|
||||
|
||||
//
|
||||
// Class: Change
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Change' => 'Mudança',
|
||||
'Class:Change+' => '',
|
||||
'Class:Change/Attribute:start_date' => 'Início planejado',
|
||||
'Class:Change/Attribute:start_date+' => '',
|
||||
'Class:Change/Attribute:status' => 'Status',
|
||||
'Class:Change/Attribute:status+' => '',
|
||||
'Class:Change/Attribute:status/Value:new' => 'Novo',
|
||||
'Class:Change/Attribute:status/Value:new+' => '',
|
||||
'Class:Change/Attribute:status/Value:validated' => 'Validado',
|
||||
'Class:Change/Attribute:status/Value:validated+' => '',
|
||||
'Class:Change/Attribute:status/Value:rejected' => 'Rejeitado',
|
||||
'Class:Change/Attribute:status/Value:rejected+' => '',
|
||||
'Class:Change/Attribute:status/Value:assigned' => 'Atribuído',
|
||||
'Class:Change/Attribute:status/Value:assigned+' => '',
|
||||
'Class:Change/Attribute:status/Value:plannedscheduled' => 'Planejado e agendado',
|
||||
'Class:Change/Attribute:status/Value:plannedscheduled+' => '',
|
||||
'Class:Change/Attribute:status/Value:approved' => 'Aprovado',
|
||||
'Class:Change/Attribute:status/Value:approved+' => '',
|
||||
'Class:Change/Attribute:status/Value:notapproved' => 'Não aprovado',
|
||||
'Class:Change/Attribute:status/Value:notapproved+' => '',
|
||||
'Class:Change/Attribute:status/Value:implemented' => 'Implementado',
|
||||
'Class:Change/Attribute:status/Value:implemented+' => '',
|
||||
'Class:Change/Attribute:status/Value:monitored' => 'Monitorado',
|
||||
'Class:Change/Attribute:status/Value:monitored+' => '',
|
||||
'Class:Change/Attribute:status/Value:closed' => 'Fechado',
|
||||
'Class:Change/Attribute:status/Value:closed+' => '',
|
||||
'Class:Change/Attribute:reason' => 'Razão',
|
||||
'Class:Change/Attribute:reason+' => '',
|
||||
'Class:Change/Attribute:requestor_id' => 'Solicitador',
|
||||
'Class:Change/Attribute:requestor_id+' => '',
|
||||
'Class:Change/Attribute:requestor_email' => 'Solicitador',
|
||||
'Class:Change/Attribute:requestor_email+' => '',
|
||||
'Class:Change/Attribute:org_id' => 'Cliente',
|
||||
'Class:Change/Attribute:org_id+' => '',
|
||||
'Class:Change/Attribute:org_name' => 'Cliente',
|
||||
'Class:Change/Attribute:org_name+' => '',
|
||||
'Class:Change/Attribute:workgroup_id' => 'Grupo de trabalho',
|
||||
'Class:Change/Attribute:workgroup_id+' => '',
|
||||
'Class:Change/Attribute:workgroup_name' => 'Grupo de trabalho',
|
||||
'Class:Change/Attribute:workgroup_name+' => '',
|
||||
'Class:Change/Attribute:creation_date' => 'Criado',
|
||||
'Class:Change/Attribute:creation_date+' => '',
|
||||
'Class:Change/Attribute:last_update' => 'Última atualização',
|
||||
'Class:Change/Attribute:last_update+' => '',
|
||||
'Class:Change/Attribute:end_date' => 'Data final',
|
||||
'Class:Change/Attribute:end_date+' => '',
|
||||
'Class:Change/Attribute:close_date' => 'Fechado',
|
||||
'Class:Change/Attribute:close_date+' => '',
|
||||
'Class:Change/Attribute:impact' => 'Impacto',
|
||||
'Class:Change/Attribute:impact+' => '',
|
||||
'Class:Change/Attribute:agent_id' => 'Agente',
|
||||
'Class:Change/Attribute:agent_id+' => '',
|
||||
'Class:Change/Attribute:agent_name' => 'Agente',
|
||||
'Class:Change/Attribute:agent_name+' => '',
|
||||
'Class:Change/Attribute:agent_email' => 'Agente',
|
||||
'Class:Change/Attribute:agent_email+' => '',
|
||||
'Class:Change/Attribute:supervisor_group_id' => 'Supervisor equipe',
|
||||
'Class:Change/Attribute:supervisor_group_id+' => '',
|
||||
'Class:Change/Attribute:supervisor_group_name' => 'Supervisor equipe',
|
||||
'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' => 'Gerente equipe',
|
||||
'Class:Change/Attribute:manager_group_id+' => '',
|
||||
'Class:Change/Attribute:manager_group_name' => 'Gerente equipe',
|
||||
'Class:Change/Attribute:manager_group_name+' => '',
|
||||
'Class:Change/Attribute:manager_id' => 'Gerente',
|
||||
'Class:Change/Attribute:manager_id+' => '',
|
||||
'Class:Change/Attribute:manager_email' => 'Gerente',
|
||||
'Class:Change/Attribute:manager_email+' => '',
|
||||
'Class:Change/Attribute:outage' => 'Outage',
|
||||
'Class:Change/Attribute:outage+' => '',
|
||||
'Class:Change/Attribute:outage/Value:yes' => 'Sim',
|
||||
'Class:Change/Attribute:outage/Value:yes+' => '',
|
||||
'Class:Change/Attribute:outage/Value:no' => 'Não',
|
||||
'Class:Change/Attribute:outage/Value:no+' => '',
|
||||
'Class:Change/Attribute:change_request' => 'Solicitação',
|
||||
'Class:Change/Attribute:change_request+' => '',
|
||||
'Class:Change/Attribute:fallback' => 'Plano de contigência',
|
||||
'Class:Change/Attribute:fallback+' => '',
|
||||
'Class:Change/Stimulus:ev_validate' => 'Validar',
|
||||
'Class:Change/Stimulus:ev_validate+' => '',
|
||||
'Class:Change/Stimulus:ev_reject' => 'Rejeitar',
|
||||
'Class:Change/Stimulus:ev_reject+' => '',
|
||||
'Class:Change/Stimulus:ev_assign' => 'Atribuír',
|
||||
'Class:Change/Stimulus:ev_assign+' => '',
|
||||
'Class:Change/Stimulus:ev_reopen' => 'Re-abrir',
|
||||
'Class:Change/Stimulus:ev_reopen+' => '',
|
||||
'Class:Change/Stimulus:ev_plan' => 'Planejar',
|
||||
'Class:Change/Stimulus:ev_plan+' => '',
|
||||
'Class:Change/Stimulus:ev_approve' => 'Aprovar',
|
||||
'Class:Change/Stimulus:ev_approve+' => '',
|
||||
'Class:Change/Stimulus:ev_replan' => 'Re-planejar',
|
||||
'Class:Change/Stimulus:ev_replan+' => '',
|
||||
'Class:Change/Stimulus:ev_notapprove' => 'Rejeitar',
|
||||
'Class:Change/Stimulus:ev_notapprove+' => '',
|
||||
'Class:Change/Stimulus:ev_implement' => 'Implementar',
|
||||
'Class:Change/Stimulus:ev_implement+' => '',
|
||||
'Class:Change/Stimulus:ev_monitor' => 'Monitorar',
|
||||
'Class:Change/Stimulus:ev_monitor+' => '',
|
||||
'Class:Change/Stimulus:ev_finish' => 'Finalizar',
|
||||
'Class:Change/Stimulus:ev_finish+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: RoutineChange
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:RoutineChange' => 'Mudança Rotina',
|
||||
'Class:RoutineChange+' => '',
|
||||
'Class:RoutineChange/Attribute:status/Value:new' => 'Nova',
|
||||
'Class:RoutineChange/Attribute:status/Value:new+' => '',
|
||||
'Class:RoutineChange/Attribute:status/Value:assigned' => 'Atribuído',
|
||||
'Class:RoutineChange/Attribute:status/Value:assigned+' => '',
|
||||
'Class:RoutineChange/Attribute:status/Value:plannedscheduled' => 'Planejado e agendado',
|
||||
'Class:RoutineChange/Attribute:status/Value:plannedscheduled+' => '',
|
||||
'Class:RoutineChange/Attribute:status/Value:approved' => 'Aprovado',
|
||||
'Class:RoutineChange/Attribute:status/Value:approved+' => '',
|
||||
'Class:RoutineChange/Attribute:status/Value:implemented' => 'Implementado',
|
||||
'Class:RoutineChange/Attribute:status/Value:implemented+' => '',
|
||||
'Class:RoutineChange/Attribute:status/Value:monitored' => 'Monitorado',
|
||||
'Class:RoutineChange/Attribute:status/Value:monitored+' => '',
|
||||
'Class:RoutineChange/Attribute:status/Value:closed' => 'Fechado',
|
||||
'Class:RoutineChange/Attribute:status/Value:closed+' => '',
|
||||
'Class:RoutineChange/Stimulus:ev_validate' => 'Validado',
|
||||
'Class:RoutineChange/Stimulus:ev_validate+' => '',
|
||||
'Class:RoutineChange/Stimulus:ev_assign' => 'Atribuír',
|
||||
'Class:RoutineChange/Stimulus:ev_assign+' => '',
|
||||
'Class:RoutineChange/Stimulus:ev_reopen' => 'Re-abrir',
|
||||
'Class:RoutineChange/Stimulus:ev_reopen+' => '',
|
||||
'Class:RoutineChange/Stimulus:ev_plan' => 'Planejar',
|
||||
'Class:RoutineChange/Stimulus:ev_plan+' => '',
|
||||
'Class:RoutineChange/Stimulus:ev_replan' => 'Re-planejar',
|
||||
'Class:RoutineChange/Stimulus:ev_replan+' => '',
|
||||
'Class:RoutineChange/Stimulus:ev_implement' => 'Implementar',
|
||||
'Class:RoutineChange/Stimulus:ev_implement+' => '',
|
||||
'Class:RoutineChange/Stimulus:ev_monitor' => 'Monitorar',
|
||||
'Class:RoutineChange/Stimulus:ev_monitor+' => '',
|
||||
'Class:RoutineChange/Stimulus:ev_finish' => 'Finalizar',
|
||||
'Class:RoutineChange/Stimulus:ev_finish+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ApprovedChange
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:ApprovedChange' => 'Mudanças aprovadas',
|
||||
'Class:ApprovedChange+' => '',
|
||||
'Class:ApprovedChange/Attribute:approval_date' => 'Data aprovação',
|
||||
'Class:ApprovedChange/Attribute:approval_date+' => '',
|
||||
'Class:ApprovedChange/Attribute:approval_comment' => 'Comentário aprovação',
|
||||
'Class:ApprovedChange/Attribute:approval_comment+' => '',
|
||||
'Class:ApprovedChange/Stimulus:ev_validate' => 'Validar',
|
||||
'Class:ApprovedChange/Stimulus:ev_validate+' => '',
|
||||
'Class:ApprovedChange/Stimulus:ev_reject' => 'Rejeitar',
|
||||
'Class:ApprovedChange/Stimulus:ev_reject+' => '',
|
||||
'Class:ApprovedChange/Stimulus:ev_assign' => 'Atribuír',
|
||||
'Class:ApprovedChange/Stimulus:ev_assign+' => '',
|
||||
'Class:ApprovedChange/Stimulus:ev_reopen' => 'Re-abrir',
|
||||
'Class:ApprovedChange/Stimulus:ev_reopen+' => '',
|
||||
'Class:ApprovedChange/Stimulus:ev_plan' => 'Planejar',
|
||||
'Class:ApprovedChange/Stimulus:ev_plan+' => '',
|
||||
'Class:ApprovedChange/Stimulus:ev_approve' => 'Aprovar',
|
||||
'Class:ApprovedChange/Stimulus:ev_approve+' => '',
|
||||
'Class:ApprovedChange/Stimulus:ev_replan' => 'Re-planejar',
|
||||
'Class:ApprovedChange/Stimulus:ev_replan+' => '',
|
||||
'Class:ApprovedChange/Stimulus:ev_notapprove' => 'Rejeitar aprovação',
|
||||
'Class:ApprovedChange/Stimulus:ev_notapprove+' => '',
|
||||
'Class:ApprovedChange/Stimulus:ev_implement' => 'Implementar',
|
||||
'Class:ApprovedChange/Stimulus:ev_implement+' => '',
|
||||
'Class:ApprovedChange/Stimulus:ev_monitor' => 'Monitorar',
|
||||
'Class:ApprovedChange/Stimulus:ev_monitor+' => '',
|
||||
'Class:ApprovedChange/Stimulus:ev_finish' => 'Finalizar',
|
||||
'Class:ApprovedChange/Stimulus:ev_finish+' => '',
|
||||
));
|
||||
//
|
||||
// Class: NormalChange
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:NormalChange' => 'Mudança Normal',
|
||||
'Class:NormalChange+' => '',
|
||||
'Class:NormalChange/Attribute:status/Value:new' => 'Novo',
|
||||
'Class:NormalChange/Attribute:status/Value:new+' => '',
|
||||
'Class:NormalChange/Attribute:status/Value:validated' => 'Validado',
|
||||
'Class:NormalChange/Attribute:status/Value:validated+' => '',
|
||||
'Class:NormalChange/Attribute:status/Value:rejected' => 'Rejeitado',
|
||||
'Class:NormalChange/Attribute:status/Value:rejected+' => '',
|
||||
'Class:NormalChange/Attribute:status/Value:assigned' => 'Atribuído',
|
||||
'Class:NormalChange/Attribute:status/Value:assigned+' => '',
|
||||
'Class:NormalChange/Attribute:status/Value:plannedscheduled' => 'Planejado e agendado',
|
||||
'Class:NormalChange/Attribute:status/Value:plannedscheduled+' => '',
|
||||
'Class:NormalChange/Attribute:status/Value:approved' => 'Aprovado',
|
||||
'Class:NormalChange/Attribute:status/Value:approved+' => '',
|
||||
'Class:NormalChange/Attribute:status/Value:notapproved' => 'Não aprovado',
|
||||
'Class:NormalChange/Attribute:status/Value:notapproved+' => '',
|
||||
'Class:NormalChange/Attribute:status/Value:implemented' => 'Implementado',
|
||||
'Class:NormalChange/Attribute:status/Value:implemented+' => '',
|
||||
'Class:NormalChange/Attribute:status/Value:monitored' => 'Monitorado',
|
||||
'Class:NormalChange/Attribute:status/Value:monitored+' => '',
|
||||
'Class:NormalChange/Attribute:status/Value:closed' => 'Fechado',
|
||||
'Class:NormalChange/Attribute:status/Value:closed+' => '',
|
||||
'Class:NormalChange/Attribute:acceptance_date' => 'Data aceitação',
|
||||
'Class:NormalChange/Attribute:acceptance_date+' => '',
|
||||
'Class:NormalChange/Attribute:acceptance_comment' => 'Comentário aprovação',
|
||||
'Class:NormalChange/Attribute:acceptance_comment+' => '',
|
||||
'Class:NormalChange/Stimulus:ev_validate' => 'Validar',
|
||||
'Class:NormalChange/Stimulus:ev_validate+' => '',
|
||||
'Class:NormalChange/Stimulus:ev_reject' => 'Rejeitar',
|
||||
'Class:NormalChange/Stimulus:ev_reject+' => '',
|
||||
'Class:NormalChange/Stimulus:ev_assign' => 'Atribuír',
|
||||
'Class:NormalChange/Stimulus:ev_assign+' => '',
|
||||
'Class:NormalChange/Stimulus:ev_reopen' => 'Re-abrir',
|
||||
'Class:NormalChange/Stimulus:ev_reopen+' => '',
|
||||
'Class:NormalChange/Stimulus:ev_plan' => 'Planejar',
|
||||
'Class:NormalChange/Stimulus:ev_plan+' => '',
|
||||
'Class:NormalChange/Stimulus:ev_approve' => 'Aprovar',
|
||||
'Class:NormalChange/Stimulus:ev_approve+' => '',
|
||||
'Class:NormalChange/Stimulus:ev_replan' => 'Re-planejar',
|
||||
'Class:NormalChange/Stimulus:ev_replan+' => '',
|
||||
'Class:NormalChange/Stimulus:ev_notapprove' => 'Rejeitar aprovação',
|
||||
'Class:NormalChange/Stimulus:ev_notapprove+' => '',
|
||||
'Class:NormalChange/Stimulus:ev_implement' => 'Implementar',
|
||||
'Class:NormalChange/Stimulus:ev_implement+' => '',
|
||||
'Class:NormalChange/Stimulus:ev_monitor' => 'Monitorar',
|
||||
'Class:NormalChange/Stimulus:ev_monitor+' => '',
|
||||
'Class:NormalChange/Stimulus:ev_finish' => 'Finalizar',
|
||||
'Class:NormalChange/Stimulus:ev_finish+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EmergencyChange
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:EmergencyChange' => 'Mudança Emergência',
|
||||
'Class:EmergencyChange+' => '',
|
||||
'Class:EmergencyChange/Attribute:status/Value:new' => 'Novo',
|
||||
'Class:EmergencyChange/Attribute:status/Value:new+' => '',
|
||||
'Class:EmergencyChange/Attribute:status/Value:validated' => 'Validado',
|
||||
'Class:EmergencyChange/Attribute:status/Value:validated+' => '',
|
||||
'Class:EmergencyChange/Attribute:status/Value:rejected' => 'Rejeitado',
|
||||
'Class:EmergencyChange/Attribute:status/Value:rejected+' => '',
|
||||
'Class:EmergencyChange/Attribute:status/Value:assigned' => 'Atribuído',
|
||||
'Class:EmergencyChange/Attribute:status/Value:assigned+' => '',
|
||||
'Class:EmergencyChange/Attribute:status/Value:plannedscheduled' => 'Planejado e agendado',
|
||||
'Class:EmergencyChange/Attribute:status/Value:plannedscheduled+' => '',
|
||||
'Class:EmergencyChange/Attribute:status/Value:approved' => 'Aprovado',
|
||||
'Class:EmergencyChange/Attribute:status/Value:approved+' => '',
|
||||
'Class:EmergencyChange/Attribute:status/Value:notapproved' => 'Não aprovado',
|
||||
'Class:EmergencyChange/Attribute:status/Value:notapproved+' => '',
|
||||
'Class:EmergencyChange/Attribute:status/Value:implemented' => 'Implementado',
|
||||
'Class:EmergencyChange/Attribute:status/Value:implemented+' => '',
|
||||
'Class:EmergencyChange/Attribute:status/Value:monitored' => 'Monitorado',
|
||||
'Class:EmergencyChange/Attribute:status/Value:monitored+' => '',
|
||||
'Class:EmergencyChange/Attribute:status/Value:closed' => 'Fechado',
|
||||
'Class:EmergencyChange/Attribute:status/Value:closed+' => '',
|
||||
'Class:EmergencyChange/Stimulus:ev_validate' => 'Validar',
|
||||
'Class:EmergencyChange/Stimulus:ev_validate+' => '',
|
||||
'Class:EmergencyChange/Stimulus:ev_reject' => 'Rejeitar',
|
||||
'Class:EmergencyChange/Stimulus:ev_reject+' => '',
|
||||
'Class:EmergencyChange/Stimulus:ev_assign' => 'Atribuír',
|
||||
'Class:EmergencyChange/Stimulus:ev_assign+' => '',
|
||||
'Class:EmergencyChange/Stimulus:ev_reopen' => 'Re-abrir',
|
||||
'Class:EmergencyChange/Stimulus:ev_reopen+' => '',
|
||||
'Class:EmergencyChange/Stimulus:ev_plan' => 'Planejar',
|
||||
'Class:EmergencyChange/Stimulus:ev_plan+' => '',
|
||||
'Class:EmergencyChange/Stimulus:ev_approve' => 'Aprovar',
|
||||
'Class:EmergencyChange/Stimulus:ev_approve+' => '',
|
||||
'Class:EmergencyChange/Stimulus:ev_replan' => 'Re-planejar',
|
||||
'Class:EmergencyChange/Stimulus:ev_replan+' => '',
|
||||
'Class:EmergencyChange/Stimulus:ev_notapprove' => 'Rejeitar aprovação',
|
||||
'Class:EmergencyChange/Stimulus:ev_notapprove+' => '',
|
||||
'Class:EmergencyChange/Stimulus:ev_implement' => 'Implementar',
|
||||
'Class:EmergencyChange/Stimulus:ev_implement+' => '',
|
||||
'Class:EmergencyChange/Stimulus:ev_monitor' => 'Monitorar',
|
||||
'Class:EmergencyChange/Stimulus:ev_monitor+' => '',
|
||||
'Class:EmergencyChange/Stimulus:ev_finish' => 'Finalizar',
|
||||
'Class:EmergencyChange/Stimulus:ev_finish+' => '',
|
||||
));
|
||||
|
||||
?>
|
||||
@@ -213,15 +213,15 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:Contact/Attribute:location_name' => 'Standort',
|
||||
'Class:Contact/Attribute:location_name+' => '',
|
||||
'Class:Contact/Attribute:ci_list' => 'CIs',
|
||||
'Class:Contact/Attribute:ci_list+' => 'CIs, die den Vertrag betreffen',
|
||||
'Class:Contact/Attribute:ci_list+' => 'CIs, die den Kontakt betreffen',
|
||||
'Class:Contact/Attribute:contract_list' => 'Verträge',
|
||||
'Class:Contact/Attribute:contract_list+' => 'Kontakte, die den Vertrag betreffen',
|
||||
'Class:Contact/Attribute:contract_list+' => 'Verträge, die diesen Kontakt betreffen',
|
||||
'Class:Contact/Attribute:service_list' => 'Services',
|
||||
'Class:Contact/Attribute:service_list+' => 'Services, die den Vertrag betreffen',
|
||||
'Class:Contact/Attribute:service_list+' => 'Services, die diesen Kontakt betreffen',
|
||||
'Class:Contact/Attribute:ticket_list' => 'Tickets',
|
||||
'Class:Contact/Attribute:ticket_list+' => 'Tickets, die den Vertrag betreffen',
|
||||
'Class:Contact/Attribute:ticket_list+' => 'Tickets, die diesen Kontakt betreffen',
|
||||
'Class:Contact/Attribute:team_list' => 'Teams',
|
||||
'Class:Contact/Attribute:team_list+' => 'Teams, die diesem Vertrag zugeordnet sind',
|
||||
'Class:Contact/Attribute:team_list+' => 'Teams, denen dieser Kontakt zugehörig ist',
|
||||
'Class:Contact/Attribute:finalclass' => 'Typ',
|
||||
'Class:Contact/Attribute:finalclass+' => '',
|
||||
));
|
||||
@@ -282,7 +282,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:Document/Attribute:name+' => '',
|
||||
'Class:Document/Attribute:org_id' => 'Organisation',
|
||||
'Class:Document/Attribute:description+' => '',
|
||||
'Class:Document/Attribute:org_name' => 'Organizationsname',
|
||||
'Class:Document/Attribute:org_name' => 'Organisationsname',
|
||||
'Class:Document/Attribute:org_name+' => '',
|
||||
'Class:Document/Attribute:description+' => '',
|
||||
'Class:Document/Attribute:description' => 'Beschreibung',
|
||||
@@ -524,15 +524,15 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:FunctionalCI/Attribute:importance/Value:medium' => 'Medium',
|
||||
'Class:FunctionalCI/Attribute:importance/Value:medium+' => '',
|
||||
'Class:FunctionalCI/Attribute:contact_list' => 'Kontakte',
|
||||
'Class:FunctionalCI/Attribute:contact_list+' => 'Kontakte für diesen CI',
|
||||
'Class:FunctionalCI/Attribute:contact_list+' => 'Kontakte für dieses CI',
|
||||
'Class:FunctionalCI/Attribute:document_list' => 'Dokumente',
|
||||
'Class:FunctionalCI/Attribute:document_list+' => 'Dokumentaion für diesen CI',
|
||||
'Class:FunctionalCI/Attribute:document_list+' => 'Dokumentation für dieses CI',
|
||||
'Class:FunctionalCI/Attribute:solution_list' => 'Anwendungslösungen',
|
||||
'Class:FunctionalCI/Attribute:solution_list+' => 'Anwendungslösungen für diesen CI',
|
||||
'Class:FunctionalCI/Attribute:solution_list+' => 'Anwendungslösungen, die dieses CI benutzen',
|
||||
'Class:FunctionalCI/Attribute:contract_list' => 'Verträge',
|
||||
'Class:FunctionalCI/Attribute:contract_list+' => 'Verträge, die diesen CI unterstützen',
|
||||
'Class:FunctionalCI/Attribute:contract_list+' => 'Verträge, die dieses CI unterstützen',
|
||||
'Class:FunctionalCI/Attribute:ticket_list' => 'Tickets',
|
||||
'Class:FunctionalCI/Attribute:ticket_list+' => 'Tickets, die den CI betreffen',
|
||||
'Class:FunctionalCI/Attribute:ticket_list+' => 'Tickets, die das CI betreffen',
|
||||
'Class:FunctionalCI/Attribute:finalclass' => 'Typ',
|
||||
'Class:FunctionalCI/Attribute:finalclass+' => '',
|
||||
));
|
||||
@@ -639,8 +639,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
//
|
||||
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:ConnectableCI' => 'Verknüpfbarer CI',
|
||||
'Class:ConnectableCI+' => 'Physischer CI',
|
||||
'Class:ConnectableCI' => 'Verknüpfbares CI',
|
||||
'Class:ConnectableCI+' => 'Physisches CI',
|
||||
'Class:ConnectableCI/Attribute:brand' => 'Hersteller',
|
||||
'Class:ConnectableCI/Attribute:brand+' => '',
|
||||
'Class:ConnectableCI/Attribute:model' => 'Modell',
|
||||
@@ -700,7 +700,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:full+' => '',
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:half' => 'Half',
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:half+' => '',
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:unknown' => 'Unknown',
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:unknown' => 'unbekannt',
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:unknown+' => '',
|
||||
'Class:NetworkInterface/Attribute:connected_if' => 'Angeschlossen an',
|
||||
'Class:NetworkInterface/Attribute:connected_if+' => 'Angeschlossenes Interface',
|
||||
@@ -1038,7 +1038,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Menu:SearchCIs+' => 'Nach CIs suchen',
|
||||
'Menu:ConfigManagement:Devices' => 'Geräte',
|
||||
'Menu:ConfigManagement:AllDevices' => 'Anzahl der Geräte: %1$d',
|
||||
'Menu:ConfigManagement:SWAndApps' => 'Software und Anwendunge',
|
||||
'Menu:ConfigManagement:SWAndApps' => 'Software und Anwendungen',
|
||||
'Menu:ConfigManagement:Misc' => 'Diverses',
|
||||
'Menu:Group' => 'Gruppen von CIs',
|
||||
'Menu:Group+' => 'Gruppen von CIs',
|
||||
|
||||
@@ -458,49 +458,49 @@ class Subnet extends cmdbAbstractObject
|
||||
|
||||
if (!$bEditMode)
|
||||
{
|
||||
$oPage->SetCurrentTab(Dict::S('Class:Subnet/Tab:IPUsage'));
|
||||
|
||||
$bit_ip = ip2long($this->Get('ip'));
|
||||
$bit_mask = ip2long($this->Get('ip_mask'));
|
||||
|
||||
$iIPMin = $bit_ip & $bit_mask;
|
||||
$iIPMax = ($bit_ip | (~$bit_mask)) - 1;
|
||||
|
||||
$sIPMin = long2ip($iIPMin);
|
||||
$sIPMax = long2ip($iIPMax);
|
||||
|
||||
$oPage->p(Dict::Format('Class:Subnet/Tab:IPUsage-explain', $sIPMin, $sIPMax));
|
||||
|
||||
$oIfSet = new CMDBObjectSet(DBObjectSearch::FromOQL("SELECT NetworkInterface AS if WHERE INET_ATON(if.ip_address) >= INET_ATON('$sIPMin') AND INET_ATON(if.ip_address) <= INET_ATON('$sIPMax')"));
|
||||
self::DisplaySet($oPage, $oIfSet, array('block_id' => 'nwif'));
|
||||
|
||||
$iCountUsed = $oIfSet->Count();
|
||||
$iCountRange = $iIPMax - $iIPMin;
|
||||
$iFreeCount = $iCountRange - $iCountUsed;
|
||||
|
||||
$oPage->SetCurrentTab(Dict::S('Class:Subnet/Tab:FreeIPs'));
|
||||
$oPage->p(Dict::Format('Class:Subnet/Tab:FreeIPs-count', $iFreeCount));
|
||||
$oPage->p(Dict::S('Class:Subnet/Tab:FreeIPs-explain'));
|
||||
|
||||
$aUsedIPs = $oIfSet->GetColumnAsArray('ip_address', false);
|
||||
$iAnIP = $iIPMin;
|
||||
$iFound = 0;
|
||||
while (($iFound < min($iFreeCount, 10)) && ($iAnIP <= $iIPMax))
|
||||
{
|
||||
$sAnIP = long2ip($iAnIP);
|
||||
if (!in_array($sAnIP, $aUsedIPs))
|
||||
$oPage->SetCurrentTab(Dict::S('Class:Subnet/Tab:IPUsage'));
|
||||
|
||||
$bit_ip = ip2long($this->Get('ip'));
|
||||
$bit_mask = ip2long($this->Get('ip_mask'));
|
||||
|
||||
$iIPMin = ($bit_ip & $bit_mask) + 1; // exclude the first one: identifies the subnet itsel
|
||||
$iIPMax = ($bit_ip | (~$bit_mask)) - 1; // exclude the last one : reserved for DHCP
|
||||
|
||||
$sIPMin = long2ip($iIPMin);
|
||||
$sIPMax = long2ip($iIPMax);
|
||||
|
||||
$oPage->p(Dict::Format('Class:Subnet/Tab:IPUsage-explain', $sIPMin, $sIPMax));
|
||||
|
||||
$oIfSet = new CMDBObjectSet(DBObjectSearch::FromOQL("SELECT NetworkInterface AS if WHERE INET_ATON(if.ip_address) >= INET_ATON('$sIPMin') AND INET_ATON(if.ip_address) <= INET_ATON('$sIPMax')"));
|
||||
self::DisplaySet($oPage, $oIfSet, array('block_id' => 'nwif'));
|
||||
|
||||
$iCountUsed = $oIfSet->Count();
|
||||
$iCountRange = $iIPMax - $iIPMin;
|
||||
$iFreeCount = $iCountRange - $iCountUsed;
|
||||
|
||||
$oPage->SetCurrentTab(Dict::S('Class:Subnet/Tab:FreeIPs'));
|
||||
$oPage->p(Dict::Format('Class:Subnet/Tab:FreeIPs-count', $iFreeCount));
|
||||
$oPage->p(Dict::S('Class:Subnet/Tab:FreeIPs-explain'));
|
||||
|
||||
$aUsedIPs = $oIfSet->GetColumnAsArray('ip_address', false);
|
||||
$iAnIP = $iIPMin;
|
||||
$iFound = 0;
|
||||
while (($iFound < min($iFreeCount, 10)) && ($iAnIP <= $iIPMax))
|
||||
{
|
||||
$iFound++;
|
||||
$oPage->p($sAnIP);
|
||||
$sAnIP = long2ip($iAnIP);
|
||||
if (!in_array($sAnIP, $aUsedIPs))
|
||||
{
|
||||
$iFound++;
|
||||
$oPage->p($sAnIP);
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
$iAnIP++;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
$iAnIP++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
class Patch extends cmdbAbstractObject
|
||||
{
|
||||
|
||||
@@ -911,7 +911,7 @@ class Group extends cmdbAbstractObject
|
||||
MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'type'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'type','parent_id'));
|
||||
}
|
||||
}
|
||||
}
|
||||
class lnkGroupToCI extends cmdbAbstractObject
|
||||
{
|
||||
|
||||
@@ -1112,7 +1112,7 @@ class NetworkInterface extends ConnectableCI
|
||||
MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'link_type', 'connected_if', 'connected_if_device_id', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
|
||||
MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id'));
|
||||
MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'connected_if_device_id'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'logical_type', 'physical_type', 'link_type', 'connected_if_device_id'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'ip_address', 'importance', 'device_id', 'logical_type', 'physical_type', 'link_type', 'connected_if_device_id'));
|
||||
}
|
||||
|
||||
public function GetName()
|
||||
|
||||
@@ -28,6 +28,7 @@ SetupWebPage::AddModule(
|
||||
'fr.dict.itop-config-mgmt.php',
|
||||
'es_cr.dict.itop-config-mgmt.php',
|
||||
'de.dict.itop-config-mgmt.php',
|
||||
'pt_br.dict.itop-config-mgmt.php',
|
||||
),
|
||||
'data.struct' => array(
|
||||
'data.struct.Audit.xml',
|
||||
|
||||
975
modules/itop-config-mgmt-1.0.0/pt_br.dict.itop-config-mgmt.php
Normal file
975
modules/itop-config-mgmt-1.0.0/pt_br.dict.itop-config-mgmt.php
Normal file
@@ -0,0 +1,975 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Relations
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Relation:impacts/Description' => 'Elementos impactados por',
|
||||
'Relation:impacts/VerbUp' => 'Impacto...',
|
||||
'Relation:impacts/VerbDown' => 'Elementos impactados por...',
|
||||
'Relation:depends on/Description' => 'Elements this element depends on',
|
||||
'Relation:depends on/VerbUp' => 'Dependente...',
|
||||
'Relation:depends on/VerbDown' => 'Impactos...',
|
||||
));
|
||||
|
||||
|
||||
// Dictionnay conventions
|
||||
// Class:<class_name>
|
||||
// Class:<class_name>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>
|
||||
// Class:<class_name>/Attribute:<attribute_code>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>+
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'bizmodel'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
// Dictionnay conventions
|
||||
// Class:<class_name>
|
||||
// Class:<class_name>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>
|
||||
// Class:<class_name>/Attribute:<attribute_code>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>+
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Note: The classes have been grouped by categories: bizmodel
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'bizmodel'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: Organization
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Organization' => 'Organização',
|
||||
'Class:Organization+' => '',
|
||||
'Class:Organization/Attribute:name' => 'Nome',
|
||||
'Class:Organization/Attribute:name+' => 'Nome comum',
|
||||
'Class:Organization/Attribute:code' => 'Codigo',
|
||||
'Class:Organization/Attribute:code+' => 'Código Organização',
|
||||
'Class:Organization/Attribute:status' => 'Status',
|
||||
'Class:Organization/Attribute:status+' => '',
|
||||
'Class:Organization/Attribute:status/Value:active' => 'Ativo',
|
||||
'Class:Organization/Attribute:status/Value:active+' => 'Ativo',
|
||||
'Class:Organization/Attribute:status/Value:inactive' => 'Inativo',
|
||||
'Class:Organization/Attribute:status/Value:inactive+' => 'Inativo',
|
||||
'Class:Organization/Attribute:parent_id' => 'Matriz',
|
||||
'Class:Organization/Attribute:parent_id+' => 'Organização matriz',
|
||||
'Class:Organization/Attribute:parent_name' => 'Nome matriz',
|
||||
'Class:Organization/Attribute:parent_name+' => 'Nome da matriz',
|
||||
));
|
||||
|
||||
|
||||
//
|
||||
// Class: Location
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Location' => 'Localizacao',
|
||||
'Class:Location+' => 'Qualquer tipo localizacao: Região, Pais, Cidade, Site, Construção, Piso, Sala, Rack,...',
|
||||
'Class:Location/Attribute:name' => 'Nome',
|
||||
'Class:Location/Attribute:name+' => '',
|
||||
'Class:Location/Attribute:status' => 'Status',
|
||||
'Class:Location/Attribute:status+' => '',
|
||||
'Class:Location/Attribute:status/Value:active' => 'Ativo',
|
||||
'Class:Location/Attribute:status/Value:active+' => 'Ativo',
|
||||
'Class:Location/Attribute:status/Value:inactive' => 'Inativo',
|
||||
'Class:Location/Attribute:status/Value:inactive+' => 'Inativo',
|
||||
'Class:Location/Attribute:org_id' => 'Proprietário',
|
||||
'Class:Location/Attribute:org_id+' => '',
|
||||
'Class:Location/Attribute:org_name' => 'Nome do proprietário',
|
||||
'Class:Location/Attribute:org_name+' => '',
|
||||
'Class:Location/Attribute:address' => 'Endereço',
|
||||
'Class:Location/Attribute:address+' => 'Endereço',
|
||||
'Class:Location/Attribute:postal_code' => 'CEP',
|
||||
'Class:Location/Attribute:postal_code+' => 'CEP',
|
||||
'Class:Location/Attribute:city' => 'Cidade',
|
||||
'Class:Location/Attribute:city+' => '',
|
||||
'Class:Location/Attribute:country' => 'Pais',
|
||||
'Class:Location/Attribute:country+' => '',
|
||||
'Class:Location/Attribute:parent_id' => 'Parent location',
|
||||
'Class:Location/Attribute:parent_id+' => '',
|
||||
'Class:Location/Attribute:parent_name' => 'Parent name',
|
||||
'Class:Location/Attribute:parent_name+' => '',
|
||||
'Class:Location/Attribute:contact_list' => 'Contatos',
|
||||
'Class:Location/Attribute:contact_list+' => 'Contatos localizados neste site',
|
||||
'Class:Location/Attribute:infra_list' => 'Infra-estrutura',
|
||||
'Class:Location/Attribute:infra_list+' => 'CIs localizados neste site',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Contact
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Contact' => 'Contato',
|
||||
'Class:Contact+' => '',
|
||||
'Class:Contact/Attribute:name' => 'Nome',
|
||||
'Class:Contact/Attribute:name+' => '',
|
||||
'Class:Contact/Attribute:status' => 'Status',
|
||||
'Class:Contact/Attribute:status+' => '',
|
||||
'Class:Contact/Attribute:status/Value:active' => 'Ativo',
|
||||
'Class:Contact/Attribute:status/Value:active+' => 'Ativo',
|
||||
'Class:Contact/Attribute:status/Value:inactive' => 'Inativo',
|
||||
'Class:Contact/Attribute:status/Value:inactive+' => 'Inativo',
|
||||
'Class:Contact/Attribute:org_id' => 'Organizacao',
|
||||
'Class:Contact/Attribute:org_id+' => '',
|
||||
'Class:Contact/Attribute:org_name' => 'Organizacao',
|
||||
'Class:Contact/Attribute:org_name+' => '',
|
||||
'Class:Contact/Attribute:email' => 'Email',
|
||||
'Class:Contact/Attribute:email+' => '',
|
||||
'Class:Contact/Attribute:phone' => 'Telefone',
|
||||
'Class:Contact/Attribute:phone+' => '',
|
||||
'Class:Contact/Attribute:location_id' => 'Localizacao',
|
||||
'Class:Contact/Attribute:location_id+' => '',
|
||||
'Class:Contact/Attribute:location_name' => 'Localizacao',
|
||||
'Class:Contact/Attribute:location_name+' => '',
|
||||
'Class:Contact/Attribute:ci_list' => 'CIs',
|
||||
'Class:Contact/Attribute:ci_list+' => 'CIs relacionados para o contato',
|
||||
'Class:Contact/Attribute:contract_list' => 'Contratos',
|
||||
'Class:Contact/Attribute:contract_list+' => 'Contratos relativo ao contato',
|
||||
'Class:Contact/Attribute:service_list' => 'Servicos',
|
||||
'Class:Contact/Attribute:service_list+' => 'Servicos relativo ao contato',
|
||||
'Class:Contact/Attribute:ticket_list' => 'Tickets',
|
||||
'Class:Contact/Attribute:ticket_list+' => 'Tickets relacionado ao contato',
|
||||
'Class:Contact/Attribute:team_list' => 'Equipes',
|
||||
'Class:Contact/Attribute:team_list+' => 'Equipes que esse contato pertence',
|
||||
'Class:Contact/Attribute:finalclass' => 'Tipo',
|
||||
'Class:Contact/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Person
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Person' => 'Pessoas',
|
||||
'Class:Person+' => '',
|
||||
'Class:Person/Attribute:first_name' => 'Primeiro nome',
|
||||
'Class:Person/Attribute:first_name+' => '',
|
||||
'Class:Person/Attribute:employee_id' => 'ID colaborador',
|
||||
'Class:Person/Attribute:employee_id+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Team
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Team' => 'Equipe',
|
||||
'Class:Team+' => '',
|
||||
'Class:Team/Attribute:member_list' => 'Membros',
|
||||
'Class:Team/Attribute:member_list+' => 'Contatos que são partes da equipe',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkTeamToContact
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkTeamToContact' => 'Membros equipe',
|
||||
'Class:lnkTeamToContact+' => 'Membros da equipe',
|
||||
'Class:lnkTeamToContact/Attribute:team_id' => 'Equipe',
|
||||
'Class:lnkTeamToContact/Attribute:team_id+' => '',
|
||||
'Class:lnkTeamToContact/Attribute:contact_id' => 'Membro',
|
||||
'Class:lnkTeamToContact/Attribute:contact_id+' => '',
|
||||
'Class:lnkTeamToContact/Attribute:contact_location_id' => 'Localização',
|
||||
'Class:lnkTeamToContact/Attribute:contact_location_id+' => '',
|
||||
'Class:lnkTeamToContact/Attribute:contact_email' => 'Email',
|
||||
'Class:lnkTeamToContact/Attribute:contact_email+' => '',
|
||||
'Class:lnkTeamToContact/Attribute:contact_phone' => 'Telefone',
|
||||
'Class:lnkTeamToContact/Attribute:contact_phone+' => '',
|
||||
'Class:lnkTeamToContact/Attribute:role' => 'Regra',
|
||||
'Class:lnkTeamToContact/Attribute:role+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Document
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Document' => 'Documentos',
|
||||
'Class:Document+' => '',
|
||||
'Class:Document/Attribute:name' => 'Nome',
|
||||
'Class:Document/Attribute:name+' => '',
|
||||
'Class:Document/Attribute:description' => 'Descrição',
|
||||
'Class:Document/Attribute:description+' => '',
|
||||
'Class:Document/Attribute:type' => 'Tipo',
|
||||
'Class:Document/Attribute:type+' => '',
|
||||
'Class:Document/Attribute:type/Value:contract' => 'Contrato',
|
||||
'Class:Document/Attribute:type/Value:contract+' => '',
|
||||
'Class:Document/Attribute:type/Value:networkmap' => 'Mapa rede',
|
||||
'Class:Document/Attribute:type/Value:networkmap+' => '',
|
||||
'Class:Document/Attribute:type/Value:presentation' => 'Apresentação',
|
||||
'Class:Document/Attribute:type/Value:presentation+' => '',
|
||||
'Class:Document/Attribute:type/Value:training' => 'Treinamento',
|
||||
'Class:Document/Attribute:type/Value:training+' => '',
|
||||
'Class:Document/Attribute:type/Value:whitePaper' => 'How To',
|
||||
'Class:Document/Attribute:type/Value:whitePaper+' => '',
|
||||
'Class:Document/Attribute:type/Value:workinginstructions' => 'Instruções trabalho',
|
||||
'Class:Document/Attribute:type/Value:workinginstructions+' => '',
|
||||
'Class:Document/Attribute:status' => 'Status',
|
||||
'Class:Document/Attribute:status+' => '',
|
||||
'Class:Document/Attribute:status/Value:draft' => 'Rascunho',
|
||||
'Class:Document/Attribute:status/Value:draft+' => '',
|
||||
'Class:Document/Attribute:status/Value:obsolete' => 'Obsoleto',
|
||||
'Class:Document/Attribute:status/Value:obsolete+' => '',
|
||||
'Class:Document/Attribute:status/Value:published' => 'Publicado',
|
||||
'Class:Document/Attribute:status/Value:published+' => '',
|
||||
'Class:Document/Attribute:ci_list' => 'CIs',
|
||||
'Class:Document/Attribute:ci_list+' => 'CIs referente a este documento',
|
||||
'Class:Document/Attribute:contract_list' => 'Contratos',
|
||||
'Class:Document/Attribute:contract_list+' => 'Contratos referente a este documento',
|
||||
'Class:Document/Attribute:service_list' => 'Serviços',
|
||||
'Class:Document/Attribute:service_list+' => 'Serviços referente a este documento',
|
||||
'Class:Document/Attribute:ticket_list' => 'Tickets',
|
||||
'Class:Document/Attribute:ticket_list+' => 'Tickets referente a este documento',
|
||||
'Class:Document:PreviewTab' => 'Visualização',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ExternalDoc
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:ExternalDoc' => 'Documento externo',
|
||||
'Class:ExternalDoc+' => 'Documento disponível em outro web server',
|
||||
'Class:ExternalDoc/Attribute:url' => 'Url',
|
||||
'Class:ExternalDoc/Attribute:url+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Note
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Note' => 'Notas',
|
||||
'Class:Note+' => '',
|
||||
'Class:Note/Attribute:note' => 'Textos',
|
||||
'Class:Note/Attribute:note+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: FileDoc
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:FileDoc' => 'Documento (arquivo)',
|
||||
'Class:FileDoc+' => '',
|
||||
'Class:FileDoc/Attribute:contents' => 'Conteudos',
|
||||
'Class:FileDoc/Attribute:contents+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Licence
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Licence' => 'Licenças',
|
||||
'Class:Licence+' => '',
|
||||
'Class:Licence/Attribute:provider' => 'Provedora',
|
||||
'Class:Licence/Attribute:provider+' => '',
|
||||
'Class:Licence/Attribute:product' => 'Produto',
|
||||
'Class:Licence/Attribute:product+' => '',
|
||||
'Class:Licence/Attribute:name' => 'Nome',
|
||||
'Class:Licence/Attribute:name+' => '',
|
||||
'Class:Licence/Attribute:start' => 'Data início',
|
||||
'Class:Licence/Attribute:start+' => '',
|
||||
'Class:Licence/Attribute:end' => 'Data final',
|
||||
'Class:Licence/Attribute:end+' => '',
|
||||
'Class:Licence/Attribute:licence_key' => 'Chave',
|
||||
'Class:Licence/Attribute:licence_key+' => '',
|
||||
'Class:Licence/Attribute:scope' => 'Scope',
|
||||
'Class:Licence/Attribute:scope+' => '',
|
||||
'Class:Licence/Attribute:usage_limit' => 'Limite uso',
|
||||
'Class:Licence/Attribute:usage_limit+' => '',
|
||||
'Class:Licence/Attribute:usage_list' => 'Usado',
|
||||
'Class:Licence/Attribute:usage_list+' => 'instâncias de aplicativos usando esta licença',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Subnet
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Subnet' => 'Sub-rede',
|
||||
'Class:Subnet+' => '',
|
||||
//'Class:Subnet/Attribute:name' => 'Nome',
|
||||
//'Class:Subnet/Attribute:name+' => '',
|
||||
'Class:Subnet/Attribute:org_id' => 'Organização',
|
||||
'Class:Subnet/Attribute:org_id+' => '',
|
||||
'Class:Subnet/Attribute:description' => 'Descrição',
|
||||
'Class:Subnet/Attribute:description+' => '',
|
||||
'Class:Subnet/Attribute:ip' => 'IP',
|
||||
'Class:Subnet/Attribute:ip+' => '',
|
||||
'Class:Subnet/Attribute:ip_mask' => 'Máscara de rede',
|
||||
'Class:Subnet/Attribute:ip_mask+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Patch
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Patch' => 'Patch',
|
||||
'Class:Patch+' => '',
|
||||
'Class:Patch/Attribute:name' => 'Nome',
|
||||
'Class:Patch/Attribute:name+' => '',
|
||||
'Class:Patch/Attribute:description' => 'Descrição',
|
||||
'Class:Patch/Attribute:description+' => '',
|
||||
'Class:Patch/Attribute:target_sw' => 'Application scope',
|
||||
'Class:Patch/Attribute:target_sw+' => 'Destino software (OS ou aplicação)',
|
||||
'Class:Patch/Attribute:version' => 'Versão',
|
||||
'Class:Patch/Attribute:version+' => '',
|
||||
'Class:Patch/Attribute:type' => 'Tipo',
|
||||
'Class:Patch/Attribute:type+' => '',
|
||||
'Class:Patch/Attribute:type/Value:application' => 'Applicação',
|
||||
'Class:Patch/Attribute:type/Value:application+' => '',
|
||||
'Class:Patch/Attribute:type/Value:os' => 'OS',
|
||||
'Class:Patch/Attribute:type/Value:os+' => '',
|
||||
'Class:Patch/Attribute:type/Value:security' => 'Segurança',
|
||||
'Class:Patch/Attribute:type/Value:security+' => '',
|
||||
'Class:Patch/Attribute:type/Value:servicepack' => 'Service Pack',
|
||||
'Class:Patch/Attribute:type/Value:servicepack+' => '',
|
||||
'Class:Patch/Attribute:ci_list' => 'Dispositivo',
|
||||
'Class:Patch/Attribute:ci_list+' => 'Dispositivo onde o patch está instalado',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Software
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Software' => 'Software',
|
||||
'Class:Software+' => '',
|
||||
'Class:Software/Attribute:name' => 'Nome',
|
||||
'Class:Software/Attribute:name+' => '',
|
||||
'Class:Software/Attribute:description' => 'Descrição',
|
||||
'Class:Software/Attribute:description+' => '',
|
||||
'Class:Software/Attribute:instance_list' => 'Instalações',
|
||||
'Class:Software/Attribute:instance_list+' => 'Instâncias do software',
|
||||
'Class:Software/Attribute:finalclass' => 'Tipo',
|
||||
'Class:Software/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Application
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Application' => 'Aplicações',
|
||||
'Class:Application+' => '',
|
||||
'Class:Application/Attribute:name' => 'Nome',
|
||||
'Class:Application/Attribute:name+' => '',
|
||||
'Class:Application/Attribute:description' => 'Descrição',
|
||||
'Class:Application/Attribute:description+' => '',
|
||||
'Class:Application/Attribute:instance_list' => 'Instalações',
|
||||
'Class:Application/Attribute:instance_list+' => 'Instâncias da aplicação',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: DBServer
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:DBServer' => 'Database',
|
||||
'Class:DBServer+' => 'Database server SW',
|
||||
'Class:DBServer/Attribute:instance_list' => 'Instalações',
|
||||
'Class:DBServer/Attribute:instance_list+' => 'Instâncias desta base de dados do servidor',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkPatchToCI
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkPatchToCI' => 'Patch utilizado',
|
||||
'Class:lnkPatchToCI+' => '',
|
||||
'Class:lnkPatchToCI/Attribute:patch_id' => 'Patch',
|
||||
'Class:lnkPatchToCI/Attribute:patch_id+' => '',
|
||||
'Class:lnkPatchToCI/Attribute:patch_name' => 'Patch',
|
||||
'Class:lnkPatchToCI/Attribute:patch_name+' => '',
|
||||
'Class:lnkPatchToCI/Attribute:ci_id' => 'CI',
|
||||
'Class:lnkPatchToCI/Attribute:ci_id+' => '',
|
||||
'Class:lnkPatchToCI/Attribute:ci_name' => 'CI',
|
||||
'Class:lnkPatchToCI/Attribute:ci_name+' => '',
|
||||
'Class:lnkPatchToCI/Attribute:ci_status' => 'CI Status',
|
||||
'Class:lnkPatchToCI/Attribute:ci_status+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: FunctionalCI
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:FunctionalCI' => 'CI funcionalidades',
|
||||
'Class:FunctionalCI+' => '',
|
||||
'Class:FunctionalCI/Attribute:name' => 'Nome',
|
||||
'Class:FunctionalCI/Attribute:name+' => '',
|
||||
'Class:FunctionalCI/Attribute:status' => 'Status',
|
||||
'Class:FunctionalCI/Attribute:status+' => '',
|
||||
'Class:FunctionalCI/Attribute:status/Value:implementation' => 'Implementação',
|
||||
'Class:FunctionalCI/Attribute:status/Value:implementation+' => '',
|
||||
'Class:FunctionalCI/Attribute:status/Value:obsolete' => 'Obsoleto',
|
||||
'Class:FunctionalCI/Attribute:status/Value:obsolete+' => '',
|
||||
'Class:FunctionalCI/Attribute:status/Value:production' => 'Produção',
|
||||
'Class:FunctionalCI/Attribute:status/Value:production+' => '',
|
||||
'Class:FunctionalCI/Attribute:org_id' => 'Organização',
|
||||
'Class:FunctionalCI/Attribute:org_id+' => '',
|
||||
'Class:FunctionalCI/Attribute:owner_name' => 'Organização',
|
||||
'Class:FunctionalCI/Attribute:owner_name+' => '',
|
||||
'Class:FunctionalCI/Attribute:importance' => 'Criticidade negócio',
|
||||
'Class:FunctionalCI/Attribute:importance+' => '',
|
||||
'Class:FunctionalCI/Attribute:importance/Value:high' => 'Alto',
|
||||
'Class:FunctionalCI/Attribute:importance/Value:high+' => '',
|
||||
'Class:FunctionalCI/Attribute:importance/Value:low' => 'Baixo',
|
||||
'Class:FunctionalCI/Attribute:importance/Value:low+' => '',
|
||||
'Class:FunctionalCI/Attribute:importance/Value:medium' => 'Médio',
|
||||
'Class:FunctionalCI/Attribute:importance/Value:medium+' => '',
|
||||
'Class:FunctionalCI/Attribute:contact_list' => 'Contatos',
|
||||
'Class:FunctionalCI/Attribute:contact_list+' => 'Contatos para este CI',
|
||||
'Class:FunctionalCI/Attribute:document_list' => 'Documentos',
|
||||
'Class:FunctionalCI/Attribute:document_list+' => 'Documenção para este CI',
|
||||
'Class:FunctionalCI/Attribute:solution_list' => 'Application solutions',
|
||||
'Class:FunctionalCI/Attribute:solution_list+' => 'Application solutions using this CI',
|
||||
'Class:FunctionalCI/Attribute:contract_list' => 'Contratos',
|
||||
'Class:FunctionalCI/Attribute:contract_list+' => 'Contratos suportanto este CI',
|
||||
'Class:FunctionalCI/Attribute:ticket_list' => 'Tickets',
|
||||
'Class:FunctionalCI/Attribute:ticket_list+' => 'Tickets relacionado a este CI',
|
||||
'Class:FunctionalCI/Attribute:finalclass' => 'Tipo',
|
||||
'Class:FunctionalCI/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: SoftwareInstance
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:SoftwareInstance' => 'Software Instance',
|
||||
'Class:SoftwareInstance+' => '',
|
||||
'Class:SoftwareInstance/Attribute:device_id' => 'Dispositivo',
|
||||
'Class:SoftwareInstance/Attribute:device_id+' => '',
|
||||
'Class:SoftwareInstance/Attribute:device_name' => 'Dispositivo',
|
||||
'Class:SoftwareInstance/Attribute:device_name+' => '',
|
||||
'Class:SoftwareInstance/Attribute:licence_id' => 'Licença',
|
||||
'Class:SoftwareInstance/Attribute:licence_id+' => '',
|
||||
'Class:SoftwareInstance/Attribute:licence_name' => 'Licença',
|
||||
'Class:SoftwareInstance/Attribute:licence_name+' => '',
|
||||
'Class:SoftwareInstance/Attribute:software_id' => 'Software',
|
||||
'Class:SoftwareInstance/Attribute:software_id+' => '',
|
||||
'Class:SoftwareInstance/Attribute:software_name' => 'Software',
|
||||
'Class:SoftwareInstance/Attribute:software_name+' => '',
|
||||
'Class:SoftwareInstance/Attribute:version' => 'Versão',
|
||||
'Class:SoftwareInstance/Attribute:version+' => '',
|
||||
'Class:SoftwareInstance/Attribute:description' => 'Descrição',
|
||||
'Class:SoftwareInstance/Attribute:description+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ApplicationInstance
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:ApplicationInstance' => 'Instância Aplicação',
|
||||
'Class:ApplicationInstance+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: DBServerInstance
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:DBServerInstance' => 'Instâncias DB Server',
|
||||
'Class:DBServerInstance+' => '',
|
||||
'Class:DBServerInstance/Attribute:dbinstance_list' => 'Base de Dados',
|
||||
'Class:DBServerInstance/Attribute:dbinstance_list+' => 'Origem Base de dados',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: DatabaseInstance
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:DatabaseInstance' => 'Instância Base de Dados',
|
||||
'Class:DatabaseInstance+' => '',
|
||||
'Class:DatabaseInstance/Attribute:db_server_instance_id' => 'Servidor Base de Dados',
|
||||
'Class:DatabaseInstance/Attribute:db_server_instance_id+' => '',
|
||||
'Class:DatabaseInstance/Attribute:db_server_instance_version' => 'Versão Base de Dados',
|
||||
'Class:DatabaseInstance/Attribute:db_server_instance_version+' => '',
|
||||
'Class:DatabaseInstance/Attribute:description' => 'Descrição',
|
||||
'Class:DatabaseInstance/Attribute:description+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ApplicationSolution
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:ApplicationSolution' => 'Application Solution',
|
||||
'Class:ApplicationSolution+' => '',
|
||||
'Class:ApplicationSolution/Attribute:description' => 'Descrição',
|
||||
'Class:ApplicationSolution/Attribute:description+' => '',
|
||||
'Class:ApplicationSolution/Attribute:ci_list' => 'CIs',
|
||||
'Class:ApplicationSolution/Attribute:ci_list+' => 'CIs que compõem a solução',
|
||||
'Class:ApplicationSolution/Attribute:process_list' => 'Os processos do negócios',
|
||||
'Class:ApplicationSolution/Attribute:process_list+' => 'Os processos de negócio baseando-se na solução',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: BusinessProcess
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:BusinessProcess' => 'Processos Negócio',
|
||||
'Class:BusinessProcess+' => '',
|
||||
'Class:BusinessProcess/Attribute:description' => 'Descrição',
|
||||
'Class:BusinessProcess/Attribute:description+' => '',
|
||||
'Class:BusinessProcess/Attribute:used_solution_list' => 'Application solutions',
|
||||
'Class:BusinessProcess/Attribute:used_solution_list+' => 'Application solutions the process is relying on',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ConnectableCI
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:ConnectableCI' => 'Conectividade CI',
|
||||
'Class:ConnectableCI+' => 'CI físicos',
|
||||
'Class:ConnectableCI/Attribute:brand' => 'Fabricante',
|
||||
'Class:ConnectableCI/Attribute:brand+' => '',
|
||||
'Class:ConnectableCI/Attribute:model' => 'Modelo',
|
||||
'Class:ConnectableCI/Attribute:model+' => '',
|
||||
'Class:ConnectableCI/Attribute:serial_number' => 'Serial Number',
|
||||
'Class:ConnectableCI/Attribute:serial_number+' => '',
|
||||
'Class:ConnectableCI/Attribute:asset_ref' => 'Atribuir Referência',
|
||||
'Class:ConnectableCI/Attribute:asset_ref+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: NetworkInterface
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:NetworkInterface' => 'Interface de rede',
|
||||
'Class:NetworkInterface+' => '',
|
||||
'Class:NetworkInterface/Attribute:device_id' => 'Dispositivo',
|
||||
'Class:NetworkInterface/Attribute:device_id+' => '',
|
||||
'Class:NetworkInterface/Attribute:device_name' => 'Dispositivo',
|
||||
'Class:NetworkInterface/Attribute:device_name+' => '',
|
||||
'Class:NetworkInterface/Attribute:logical_type' => 'Tipo lógico',
|
||||
'Class:NetworkInterface/Attribute:logical_type+' => '',
|
||||
'Class:NetworkInterface/Attribute:logical_type/Value:backup' => 'Backup',
|
||||
'Class:NetworkInterface/Attribute:logical_type/Value:backup+' => '',
|
||||
'Class:NetworkInterface/Attribute:logical_type/Value:logical' => 'Lógico',
|
||||
'Class:NetworkInterface/Attribute:logical_type/Value:logical+' => '',
|
||||
'Class:NetworkInterface/Attribute:logical_type/Value:port' => 'Porta',
|
||||
'Class:NetworkInterface/Attribute:logical_type/Value:port+' => '',
|
||||
'Class:NetworkInterface/Attribute:logical_type/Value:primary' => 'Primário',
|
||||
'Class:NetworkInterface/Attribute:logical_type/Value:primary+' => '',
|
||||
'Class:NetworkInterface/Attribute:logical_type/Value:secondary' => 'Secundário',
|
||||
'Class:NetworkInterface/Attribute:logical_type/Value:secondary+' => '',
|
||||
'Class:NetworkInterface/Attribute:physical_type' => 'Físico',
|
||||
'Class:NetworkInterface/Attribute:physical_type+' => '',
|
||||
'Class:NetworkInterface/Attribute:physical_type/Value:atm' => 'ATM',
|
||||
'Class:NetworkInterface/Attribute:physical_type/Value:atm+' => '',
|
||||
'Class:NetworkInterface/Attribute:physical_type/Value:ethernet' => 'Ethernet',
|
||||
'Class:NetworkInterface/Attribute:physical_type/Value:ethernet+' => '',
|
||||
'Class:NetworkInterface/Attribute:physical_type/Value:framerelay' => 'Frame Relay',
|
||||
'Class:NetworkInterface/Attribute:physical_type/Value:framerelay+' => '',
|
||||
'Class:NetworkInterface/Attribute:physical_type/Value:vlan' => 'VLAN',
|
||||
'Class:NetworkInterface/Attribute:physical_type/Value:vlan+' => '',
|
||||
'Class:NetworkInterface/Attribute:ip_address' => 'Endereço IP',
|
||||
'Class:NetworkInterface/Attribute:ip_address+' => '',
|
||||
'Class:NetworkInterface/Attribute:ip_mask' => 'Máscara de rede',
|
||||
'Class:NetworkInterface/Attribute:ip_mask+' => '',
|
||||
'Class:NetworkInterface/Attribute:mac_address' => 'Endereço MAC',
|
||||
'Class:NetworkInterface/Attribute:mac_address+' => '',
|
||||
'Class:NetworkInterface/Attribute:speed' => 'Velocidade',
|
||||
'Class:NetworkInterface/Attribute:speed+' => '',
|
||||
'Class:NetworkInterface/Attribute:duplex' => 'Duplex',
|
||||
'Class:NetworkInterface/Attribute:duplex+' => '',
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:full' => 'Full',
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:full+' => '',
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:half' => 'Half',
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:half+' => '',
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:unknown' => 'Desconhecido',
|
||||
'Class:NetworkInterface/Attribute:duplex/Value:unknown+' => '',
|
||||
'Class:NetworkInterface/Attribute:connected_if' => 'Connected to',
|
||||
'Class:NetworkInterface/Attribute:connected_if+' => 'Connected interface',
|
||||
'Class:NetworkInterface/Attribute:connected_name' => 'Connected to',
|
||||
'Class:NetworkInterface/Attribute:connected_name+' => '',
|
||||
'Class:NetworkInterface/Attribute:connected_if_device_id' => 'Connected device',
|
||||
'Class:NetworkInterface/Attribute:connected_if_device_id+' => '',
|
||||
'Class:NetworkInterface/Attribute:link_type' => 'Link type',
|
||||
'Class:NetworkInterface/Attribute:link_type+' => '',
|
||||
'Class:NetworkInterface/Attribute:link_type/Value:uplink' => 'Link Up',
|
||||
'Class:NetworkInterface/Attribute:link_type/Value:uplink+' => '',
|
||||
'Class:NetworkInterface/Attribute:link_type/Value:downlink' => 'Link Down',
|
||||
'Class:NetworkInterface/Attribute:link_type/Value:downlink+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Device
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Device' => 'Dispositivo',
|
||||
'Class:Device+' => '',
|
||||
'Class:Device/Attribute:nwinterface_list' => 'Interfaces de rede',
|
||||
'Class:Device/Attribute:nwinterface_list+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: PC
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:PC' => 'PC',
|
||||
'Class:PC+' => '',
|
||||
'Class:PC/Attribute:cpu' => 'CPU',
|
||||
'Class:PC/Attribute:cpu+' => '',
|
||||
'Class:PC/Attribute:ram' => 'RAM',
|
||||
'Class:PC/Attribute:ram+' => '',
|
||||
'Class:PC/Attribute:hdd' => 'Hard disk',
|
||||
'Class:PC/Attribute:hdd+' => '',
|
||||
'Class:PC/Attribute:os_family' => 'Família OS',
|
||||
'Class:PC/Attribute:os_family+' => '',
|
||||
'Class:PC/Attribute:os_version' => 'Versão OS',
|
||||
'Class:PC/Attribute:os_version+' => '',
|
||||
'Class:PC/Attribute:application_list' => 'Aplicativos',
|
||||
'Class:PC/Attribute:application_list+' => 'Aplicativos instalados neste PC',
|
||||
'Class:PC/Attribute:patch_list' => 'Patches',
|
||||
'Class:PC/Attribute:patch_list+' => 'Patches instalados neste PC',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: MobileCI
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:MobileCI' => 'Mobile CI',
|
||||
'Class:MobileCI+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: MobilePhone
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:MobilePhone' => 'Telefone celular',
|
||||
'Class:MobilePhone+' => '',
|
||||
'Class:MobilePhone/Attribute:number' => 'Número telefone',
|
||||
'Class:MobilePhone/Attribute:number+' => '',
|
||||
'Class:MobilePhone/Attribute:imei' => 'IMEI',
|
||||
'Class:MobilePhone/Attribute:imei+' => '',
|
||||
'Class:MobilePhone/Attribute:hw_pin' => 'Hardware PIN',
|
||||
'Class:MobilePhone/Attribute:hw_pin+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: InfrastructureCI
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:InfrastructureCI' => 'Infra-estrutura CI',
|
||||
'Class:InfrastructureCI+' => '',
|
||||
'Class:InfrastructureCI/Attribute:description' => 'Descrição',
|
||||
'Class:InfrastructureCI/Attribute:description+' => '',
|
||||
'Class:InfrastructureCI/Attribute:location_id' => 'Localização',
|
||||
'Class:InfrastructureCI/Attribute:location_id+' => '',
|
||||
'Class:InfrastructureCI/Attribute:location_name' => 'Localização',
|
||||
'Class:InfrastructureCI/Attribute:location_name+' => '',
|
||||
'Class:InfrastructureCI/Attribute:location_details' => 'Detalhes localização',
|
||||
'Class:InfrastructureCI/Attribute:location_details+' => '',
|
||||
'Class:InfrastructureCI/Attribute:management_ip' => 'IP gerenciamento',
|
||||
'Class:InfrastructureCI/Attribute:management_ip+' => '',
|
||||
'Class:InfrastructureCI/Attribute:default_gateway' => 'Gateway padrão',
|
||||
'Class:InfrastructureCI/Attribute:default_gateway+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: NetworkDevice
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:NetworkDevice' => 'Dispositivo rede',
|
||||
'Class:NetworkDevice+' => '',
|
||||
'Class:NetworkDevice/Attribute:type' => 'Tipo',
|
||||
'Class:NetworkDevice/Attribute:type+' => '',
|
||||
'Class:NetworkDevice/Attribute:type/Value:wanaccelerator' => 'WAN Accelerator',
|
||||
'Class:NetworkDevice/Attribute:type/Value:wanaccelerator+' => '',
|
||||
'Class:NetworkDevice/Attribute:type/Value:firewall' => 'Firewall',
|
||||
'Class:NetworkDevice/Attribute:type/Value:firewall+' => '',
|
||||
'Class:NetworkDevice/Attribute:type/Value:hub' => 'Hub',
|
||||
'Class:NetworkDevice/Attribute:type/Value:hub+' => '',
|
||||
'Class:NetworkDevice/Attribute:type/Value:loadbalancer' => 'Load Balancer',
|
||||
'Class:NetworkDevice/Attribute:type/Value:loadbalancer+' => '',
|
||||
'Class:NetworkDevice/Attribute:type/Value:router' => 'Roteador',
|
||||
'Class:NetworkDevice/Attribute:type/Value:router+' => '',
|
||||
'Class:NetworkDevice/Attribute:type/Value:switch' => 'Switch',
|
||||
'Class:NetworkDevice/Attribute:type/Value:switch+' => '',
|
||||
'Class:NetworkDevice/Attribute:ios_version' => 'Versão IOS',
|
||||
'Class:NetworkDevice/Attribute:ios_version+' => '',
|
||||
'Class:NetworkDevice/Attribute:ram' => 'RAM',
|
||||
'Class:NetworkDevice/Attribute:ram+' => '',
|
||||
'Class:NetworkDevice/Attribute:snmp_read' => 'SNMP Read',
|
||||
'Class:NetworkDevice/Attribute:snmp_read+' => '',
|
||||
'Class:NetworkDevice/Attribute:snmp_write' => 'SNMP Write',
|
||||
'Class:NetworkDevice/Attribute:snmp_write+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Server
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Server' => 'Servidor',
|
||||
'Class:Server+' => '',
|
||||
'Class:Server/Attribute:cpu' => 'CPU',
|
||||
'Class:Server/Attribute:cpu+' => '',
|
||||
'Class:Server/Attribute:ram' => 'RAM',
|
||||
'Class:Server/Attribute:ram+' => '',
|
||||
'Class:Server/Attribute:hdd' => 'Hard Disk',
|
||||
'Class:Server/Attribute:hdd+' => '',
|
||||
'Class:Server/Attribute:os_family' => 'Família OS',
|
||||
'Class:Server/Attribute:os_family+' => '',
|
||||
'Class:Server/Attribute:os_version' => 'Versão OS',
|
||||
'Class:Server/Attribute:os_version+' => '',
|
||||
'Class:Server/Attribute:application_list' => 'Aplicativos',
|
||||
'Class:Server/Attribute:application_list+' => 'Aplicativos instalados neste servidor',
|
||||
'Class:Server/Attribute:patch_list' => 'Patches',
|
||||
'Class:Server/Attribute:patch_list+' => 'Patches instalados neste servidor',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Printer
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Printer' => 'Impressões',
|
||||
'Class:Printer+' => '',
|
||||
'Class:Printer/Attribute:type' => 'Tipo',
|
||||
'Class:Printer/Attribute:type+' => '',
|
||||
'Class:Printer/Attribute:type/Value:mopier' => 'Mopier',
|
||||
'Class:Printer/Attribute:type/Value:mopier+' => '',
|
||||
'Class:Printer/Attribute:type/Value:printer' => 'Impressora',
|
||||
'Class:Printer/Attribute:type/Value:printer+' => '',
|
||||
'Class:Printer/Attribute:technology' => 'Tecnologia',
|
||||
'Class:Printer/Attribute:technology+' => '',
|
||||
'Class:Printer/Attribute:technology/Value:inkjet' => 'Inkjet',
|
||||
'Class:Printer/Attribute:technology/Value:inkjet+' => '',
|
||||
'Class:Printer/Attribute:technology/Value:laser' => 'Laser',
|
||||
'Class:Printer/Attribute:technology/Value:laser+' => '',
|
||||
'Class:Printer/Attribute:technology/Value:tracer' => 'Tracer',
|
||||
'Class:Printer/Attribute:technology/Value:tracer+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkCIToDoc
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkCIToDoc' => 'Doc/CI',
|
||||
'Class:lnkCIToDoc+' => '',
|
||||
'Class:lnkCIToDoc/Attribute:ci_id' => 'CI',
|
||||
'Class:lnkCIToDoc/Attribute:ci_id+' => '',
|
||||
'Class:lnkCIToDoc/Attribute:ci_name' => 'CI',
|
||||
'Class:lnkCIToDoc/Attribute:ci_name+' => '',
|
||||
'Class:lnkCIToDoc/Attribute:ci_status' => 'CI Status',
|
||||
'Class:lnkCIToDoc/Attribute:ci_status+' => '',
|
||||
'Class:lnkCIToDoc/Attribute:document_id' => 'Documento',
|
||||
'Class:lnkCIToDoc/Attribute:document_id+' => '',
|
||||
'Class:lnkCIToDoc/Attribute:document_name' => 'Documento',
|
||||
'Class:lnkCIToDoc/Attribute:document_name+' => '',
|
||||
'Class:lnkCIToDoc/Attribute:document_type' => 'Tipo documento',
|
||||
'Class:lnkCIToDoc/Attribute:document_type+' => '',
|
||||
'Class:lnkCIToDoc/Attribute:document_status' => 'Status documento',
|
||||
'Class:lnkCIToDoc/Attribute:document_status+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkCIToContact
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkCIToContact' => 'CI/Contatos',
|
||||
'Class:lnkCIToContact+' => '',
|
||||
'Class:lnkCIToContact/Attribute:ci_id' => 'CI',
|
||||
'Class:lnkCIToContact/Attribute:ci_id+' => '',
|
||||
'Class:lnkCIToContact/Attribute:ci_name' => 'CI',
|
||||
'Class:lnkCIToContact/Attribute:ci_name+' => '',
|
||||
'Class:lnkCIToContact/Attribute:ci_status' => 'CI Status',
|
||||
'Class:lnkCIToContact/Attribute:ci_status+' => '',
|
||||
'Class:lnkCIToContact/Attribute:contact_id' => 'Contatos',
|
||||
'Class:lnkCIToContact/Attribute:contact_id+' => '',
|
||||
'Class:lnkCIToContact/Attribute:contact_name' => 'Contatos',
|
||||
'Class:lnkCIToContact/Attribute:contact_name+' => '',
|
||||
'Class:lnkCIToContact/Attribute:contact_email' => 'Contatos Email',
|
||||
'Class:lnkCIToContact/Attribute:contact_email+' => '',
|
||||
'Class:lnkCIToContact/Attribute:role' => 'Papel',
|
||||
'Class:lnkCIToContact/Attribute:role+' => 'Papel do contato em relação ao CI',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkSolutionToCI
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkSolutionToCI' => 'CI/Solução',
|
||||
'Class:lnkSolutionToCI+' => '',
|
||||
'Class:lnkSolutionToCI/Attribute:solution_id' => 'Application solution',
|
||||
'Class:lnkSolutionToCI/Attribute:solution_id+' => '',
|
||||
'Class:lnkSolutionToCI/Attribute:solution_name' => 'Application solution',
|
||||
'Class:lnkSolutionToCI/Attribute:solution_name+' => '',
|
||||
'Class:lnkSolutionToCI/Attribute:ci_id' => 'CI',
|
||||
'Class:lnkSolutionToCI/Attribute:ci_id+' => '',
|
||||
'Class:lnkSolutionToCI/Attribute:ci_name' => 'CI',
|
||||
'Class:lnkSolutionToCI/Attribute:ci_name+' => '',
|
||||
'Class:lnkSolutionToCI/Attribute:ci_status' => 'CI Status',
|
||||
'Class:lnkSolutionToCI/Attribute:ci_status+' => '',
|
||||
'Class:lnkSolutionToCI/Attribute:utility' => 'Utilidade',
|
||||
'Class:lnkSolutionToCI/Attribute:utility+' => 'Utilidade da CI na solução',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkProcessToSolution
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkProcessToSolution' => 'Business process/Solution',
|
||||
'Class:lnkProcessToSolution+' => '',
|
||||
'Class:lnkProcessToSolution/Attribute:solution_id' => 'Application solution',
|
||||
'Class:lnkProcessToSolution/Attribute:solution_id+' => '',
|
||||
'Class:lnkProcessToSolution/Attribute:solution_name' => 'Application solution',
|
||||
'Class:lnkProcessToSolution/Attribute:solution_name+' => '',
|
||||
'Class:lnkProcessToSolution/Attribute:process_id' => 'Processo',
|
||||
'Class:lnkProcessToSolution/Attribute:process_id+' => '',
|
||||
'Class:lnkProcessToSolution/Attribute:process_name' => 'Processo',
|
||||
'Class:lnkProcessToSolution/Attribute:process_name+' => '',
|
||||
'Class:lnkProcessToSolution/Attribute:reason' => 'Razão',
|
||||
'Class:lnkProcessToSolution/Attribute:reason+' => 'Mais informações sobre a ligação entre o processo e a solução',
|
||||
));
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Class extensions
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Subnet/Tab:IPUsage' => 'IP Usado',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces possuem um endereço IP na faixa: <em>%1$s</em> até <em>%2$s</em>',
|
||||
'Class:Subnet/Tab:FreeIPs' => 'IPs livres',
|
||||
'Class:Subnet/Tab:FreeIPs-count' => 'IPs livres: %1$s',
|
||||
'Class:Subnet/Tab:FreeIPs-explain' => 'Abaixo um extrato de 10 endereços de IP livres',
|
||||
));
|
||||
|
||||
//
|
||||
// Application Menu
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Menu:Catalogs' => 'Catálogos',
|
||||
'Menu:Catalogs+' => 'Tipo de dados',
|
||||
'Menu:Audit' => 'Auditoria',
|
||||
'Menu:Audit+' => 'Auditoria',
|
||||
'Menu:Organization' => 'Organizações',
|
||||
'Menu:Organization+' => 'Todas Organizações',
|
||||
'Menu:Application' => 'Aplicativos',
|
||||
'Menu:Application+' => 'Todos Aplicativos',
|
||||
'Menu:DBServer' => 'Banco de dado Servers',
|
||||
'Menu:DBServer+' => 'Banco de dado Servers',
|
||||
'Menu:Audit' => 'Auditoria',
|
||||
'Menu:ConfigManagement' => 'Gerenciamento Configurações',
|
||||
'Menu:ConfigManagement+' => 'Gerenciamento Configurações',
|
||||
'Menu:ConfigManagementOverview' => 'Visão Global',
|
||||
'Menu:ConfigManagementOverview+' => 'Visão Global',
|
||||
'Menu:Contact' => 'Contatos',
|
||||
'Menu:Contact+' => 'Contatos',
|
||||
'Menu:Person' => 'Pessoas',
|
||||
'Menu:Person+' => 'Todas Pessoas',
|
||||
'Menu:Team' => 'Equipes',
|
||||
'Menu:Team+' => 'Todas Equipes',
|
||||
'Menu:Document' => 'Documentos',
|
||||
'Menu:Document+' => 'Todos Documentos',
|
||||
'Menu:Location' => 'Localizações',
|
||||
'Menu:Location+' => 'Todas Localizações',
|
||||
'Menu:ConfigManagementCI' => 'Configuração Itens',
|
||||
'Menu:ConfigManagementCI+' => 'Configuração Itens',
|
||||
'Menu:BusinessProcess' => 'Processos Negócio',
|
||||
'Menu:BusinessProcess+' => 'Todos Processos Negócio',
|
||||
'Menu:ApplicationSolution' => 'Application Solutions',
|
||||
'Menu:ApplicationSolution+' => 'All Application Solutions',
|
||||
'Menu:ConfigManagementSoftware' => 'Gerenciamento Aplicativos',
|
||||
'Menu:Licence' => 'Licenças',
|
||||
'Menu:Licence+' => 'Todas Licenças',
|
||||
'Menu:Patch' => 'Patches',
|
||||
'Menu:Patch+' => 'Todos Patches',
|
||||
'Menu:ApplicationInstance' => 'Software instalados',
|
||||
'Menu:ApplicationInstance+' => 'Aplicativos e Banco de dados em servidores',
|
||||
'Menu:ConfigManagementHardware' => 'Gerenciamento Infra-estrutura',
|
||||
'Menu:Subnet' => 'Sub-redes',
|
||||
'Menu:Subnet+' => 'Todas as sub-redes',
|
||||
'Menu:NetworkDevice' => 'Dispositivos de rede',
|
||||
'Menu:NetworkDevice+' => 'Todos os dispositivos de rede',
|
||||
'Menu:Server' => 'Servidores',
|
||||
'Menu:Server+' => 'Todos servidores',
|
||||
'Menu:Printer' => 'Impressoras',
|
||||
'Menu:Printer+' => 'Todas impressoras',
|
||||
'Menu:MobilePhone' => 'Mobilidade',
|
||||
'Menu:MobilePhone+' => 'Todos dispositivos móveis',
|
||||
'Menu:PC' => 'Micro-computadores',
|
||||
'Menu:PC+' => 'Todos micro-computadores',
|
||||
'Menu:NewContact' => 'Novo Contato',
|
||||
'Menu:NewContact+' => 'Novo Contato',
|
||||
'Menu:SearchContacts' => 'Pesquisa para contatos',
|
||||
'Menu:SearchContacts+' => 'Pesquisa para contatos',
|
||||
'Menu:NewCI' => 'Novo Configuração Iten',
|
||||
'Menu:NewCI+' => 'Novo Configuração Iten',
|
||||
'Menu:SearchCIs' => 'Pesquisa para CIs',
|
||||
'Menu:SearchCIs+' => 'Pesquisa para CIs',
|
||||
'Menu:ConfigManagement:Devices' => 'Devices',
|
||||
'Menu:ConfigManagement:AllDevices' => 'Number of devices: %1$d',
|
||||
'Menu:ConfigManagement:SWAndApps' => 'Software and Applications',
|
||||
'Menu:ConfigManagement:Misc' => 'Miscellaneous',
|
||||
'Menu:Group' => 'Grupo de CIs',
|
||||
'Menu:Group+' => 'Grupo de CIs',
|
||||
'Menu:ConfigManagement:Shortcuts' => 'Atalhos',
|
||||
'Menu:ConfigManagement:AllContacts' => 'Todos contatos: %1$d',
|
||||
));
|
||||
?>
|
||||
@@ -52,14 +52,19 @@ class Incident extends ResponseTicket
|
||||
|
||||
public function ComputeValues()
|
||||
{
|
||||
$iKey = $this->GetKey();
|
||||
if ($iKey < 0)
|
||||
$sCurrRef = $this->Get('ref');
|
||||
if (strlen($sCurrRef) == 0)
|
||||
{
|
||||
// Object not yet in the Database
|
||||
$iKey = MetaModel::GetNextKey(get_class($this));
|
||||
$iKey = $this->GetKey();
|
||||
if ($iKey < 0)
|
||||
{
|
||||
// Object not yet in the Database
|
||||
$iKey = MetaModel::GetNextKey(get_class($this));
|
||||
}
|
||||
$sName = sprintf('I-%06d', $iKey);
|
||||
$this->Set('ref', $sName);
|
||||
}
|
||||
$sName = sprintf('I-%06d', $iKey);
|
||||
$this->Set('ref', $sName);
|
||||
|
||||
return parent::ComputeValues();
|
||||
}
|
||||
|
||||
@@ -108,7 +113,7 @@ class Incident extends ResponseTicket
|
||||
|
||||
case 'escalated_tto':
|
||||
case 'escalated_ttr':
|
||||
$sIconName = self::MakeIconFromName('incident-escalated.png');
|
||||
$sIcon = self::MakeIconFromName('incident-escalated.png');
|
||||
break;
|
||||
|
||||
case 'resolved':
|
||||
|
||||
@@ -30,6 +30,7 @@ SetupWebPage::AddModule(
|
||||
'fr.dict.itop-incident-mgmt.php',
|
||||
'es_cr.dict.itop-incident-mgmt.php',
|
||||
'de.dict.itop-incident-mgmt.php',
|
||||
'pt_br.dict.itop-incident-mgmt.php',
|
||||
),
|
||||
'data.struct' => array(
|
||||
'data.struct.ta-triggers.xml',
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Menu:IncidentManagement' => 'Gerenciamento Incidentes',
|
||||
'Menu:IncidentManagement+' => 'Gerenciamento Incidentes',
|
||||
'Menu:Incident:Overview' => 'Visão Geral',
|
||||
'Menu:Incident:Overview+' => 'Visão Geral',
|
||||
'Menu:NewIncident' => 'Novo Incidente',
|
||||
'Menu:NewIncident+' => 'Novo Incidente',
|
||||
'Menu:SearchIncidents' => 'Pesquisa para Incidentes',
|
||||
'Menu:SearchIncidents+' => 'Pesquisa para Incidentes',
|
||||
'Menu:Incident:Shortcuts' => 'Atalhos',
|
||||
'Menu:Incident:Shortcuts+' => '',
|
||||
'Menu:Incident:MyIncidents' => 'Incidentes atribuído a mim',
|
||||
'Menu:Incident:MyIncidents+' => 'Incidentes atribuí para mim (como agente)',
|
||||
'Menu:Incident:EscalatedIncidents' => 'Incidentes encaminhados',
|
||||
'Menu:Incident:EscalatedIncidents+' => 'Incidentes encaminhados',
|
||||
'Menu:Incident:OpenIncidents' => 'Todos Incidentes abertos',
|
||||
'Menu:Incident:OpenIncidents+' => 'Todos Incidentes abertos',
|
||||
|
||||
));
|
||||
|
||||
// Dictionnay conventions
|
||||
// Class:<class_name>
|
||||
// Class:<class_name>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>
|
||||
// Class:<class_name>/Attribute:<attribute_code>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>+
|
||||
|
||||
//
|
||||
// Class: Incident
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Incident' => 'Incidentes',
|
||||
'Class:Incident+' => '',
|
||||
'Class:Incident/Stimulus:ev_assign' => 'Atribuír',
|
||||
'Class:Incident/Stimulus:ev_assign+' => '',
|
||||
'Class:Incident/Stimulus:ev_reassign' => 'Re-atribuír',
|
||||
'Class:Incident/Stimulus:ev_reassign+' => '',
|
||||
'Class:Incident/Stimulus:ev_timeout' => 'ev_timeout',
|
||||
'Class:Incident/Stimulus:ev_timeout+' => '',
|
||||
'Class:Incident/Stimulus:ev_resolve' => 'Marque como resolvido',
|
||||
'Class:Incident/Stimulus:ev_resolve+' => '',
|
||||
'Class:Incident/Stimulus:ev_close' => 'Fechado',
|
||||
'Class:Incident/Stimulus:ev_close+' => '',
|
||||
));
|
||||
|
||||
?>
|
||||
@@ -67,7 +67,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:KnownError/Attribute:problem_ref+' => '',
|
||||
'Class:KnownError/Attribute:symptom' => 'Symptom',
|
||||
'Class:KnownError/Attribute:symptom+' => '',
|
||||
'Class:KnownError/Attribute:root_cause' => 'Hauptursache',
|
||||
'Class:KnownError/Attribute:root_cause' => 'Grundursache',
|
||||
'Class:KnownError/Attribute:root_cause+' => '',
|
||||
'Class:KnownError/Attribute:workaround' => 'Workaround',
|
||||
'Class:KnownError/Attribute:workaround+' => '',
|
||||
@@ -85,7 +85,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:KnownError/Attribute:domain/Value:Network+' => 'Netzwerk',
|
||||
'Class:KnownError/Attribute:domain/Value:Server' => 'Server',
|
||||
'Class:KnownError/Attribute:domain/Value:Server+' => 'Server',
|
||||
'Class:KnownError/Attribute:vendor' => 'Verkäufer',
|
||||
'Class:KnownError/Attribute:vendor' => 'Anbieter',
|
||||
'Class:KnownError/Attribute:vendor+' => '',
|
||||
'Class:KnownError/Attribute:model' => 'Modell',
|
||||
'Class:KnownError/Attribute:model+' => '',
|
||||
@@ -137,7 +137,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:lnkDocumentError/Attribute:link_type' => 'Information',
|
||||
'Class:lnkDocumentError/Attribute:link_type+' => '',
|
||||
));
|
||||
|
||||
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Menu:ProblemManagement' => 'Problem Management', // Duplicated from Pb Mgmt module, since the two modules are independent
|
||||
'Menu:ProblemManagement+' => 'Problem Management',// and the KEDB may be installed independently of the Pb Mgmt module
|
||||
|
||||
@@ -30,6 +30,7 @@ SetupWebPage::AddModule(
|
||||
'es_cr.dict.itop-knownerror-mgmt.php',
|
||||
'fr.dict.itop-knownerror-mgmt.php',
|
||||
'de.dict.itop-knownerror-mgmt.php',
|
||||
'pt_br.dict.itop-knownerror-mgmt.php',
|
||||
),
|
||||
'data.struct' => array(
|
||||
//'data.struct.itop-knownerror-mgmt.xml',
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
// Dictionnay conventions
|
||||
// Class:<class_name>
|
||||
// Class:<class_name>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>
|
||||
// Class:<class_name>/Attribute:<attribute_code>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>+
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'bizmodel'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
// Dictionnay conventions
|
||||
// Class:<class_name>
|
||||
// Class:<class_name>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>
|
||||
// Class:<class_name>/Attribute:<attribute_code>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>+
|
||||
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:KnownError' => 'Known Error',
|
||||
'Class:KnownError+' => 'Error documented for a known issue',
|
||||
'Class:KnownError/Attribute:name' => 'Name',
|
||||
'Class:KnownError/Attribute:name+' => '',
|
||||
'Class:KnownError/Attribute:org_id' => 'Customer',
|
||||
'Class:KnownError/Attribute:org_id+' => '',
|
||||
'Class:KnownError/Attribute:cust_name' => 'Customer Name',
|
||||
'Class:KnownError/Attribute:cust_name+' => '',
|
||||
'Class:KnownError/Attribute:problem_id' => 'Related Problem',
|
||||
'Class:KnownError/Attribute:problem_id+' => '',
|
||||
'Class:KnownError/Attribute:problem_ref' => 'Ref',
|
||||
'Class:KnownError/Attribute:problem_ref+' => '',
|
||||
'Class:KnownError/Attribute:symptom' => 'Symptom',
|
||||
'Class:KnownError/Attribute:symptom+' => '',
|
||||
'Class:KnownError/Attribute:root_cause' => 'Root Cause',
|
||||
'Class:KnownError/Attribute:root_cause+' => '',
|
||||
'Class:KnownError/Attribute:workaround' => 'Workaround',
|
||||
'Class:KnownError/Attribute:workaround+' => '',
|
||||
'Class:KnownError/Attribute:solution' => 'Solution',
|
||||
'Class:KnownError/Attribute:solution+' => '',
|
||||
'Class:KnownError/Attribute:error_code' => 'Error Code',
|
||||
'Class:KnownError/Attribute:error_code+' => '',
|
||||
'Class:KnownError/Attribute:domain' => 'Domain',
|
||||
'Class:KnownError/Attribute:domain+' => '',
|
||||
'Class:KnownError/Attribute:domain/Value:Application' => 'Application',
|
||||
'Class:KnownError/Attribute:domain/Value:Application+' => 'Application',
|
||||
'Class:KnownError/Attribute:domain/Value:Desktop' => 'Desktop',
|
||||
'Class:KnownError/Attribute:domain/Value:Desktop+' => 'Desktop',
|
||||
'Class:KnownError/Attribute:domain/Value:Network' => 'Network',
|
||||
'Class:KnownError/Attribute:domain/Value:Network+' => 'Network',
|
||||
'Class:KnownError/Attribute:domain/Value:Server' => 'Server',
|
||||
'Class:KnownError/Attribute:domain/Value:Server+' => 'Server',
|
||||
'Class:KnownError/Attribute:vendor' => 'Vendor',
|
||||
'Class:KnownError/Attribute:vendor+' => '',
|
||||
'Class:KnownError/Attribute:model' => 'Model',
|
||||
'Class:KnownError/Attribute:model+' => '',
|
||||
'Class:KnownError/Attribute:version' => 'Version',
|
||||
'Class:KnownError/Attribute:version+' => '',
|
||||
'Class:KnownError/Attribute:ci_list' => 'CIs',
|
||||
'Class:KnownError/Attribute:ci_list+' => '',
|
||||
'Class:KnownError/Attribute:document_list' => 'Documents',
|
||||
'Class:KnownError/Attribute:document_list+' => '',
|
||||
));
|
||||
|
||||
|
||||
//
|
||||
// Class: lnkInfraError
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkInfraError' => 'InfraErrorLinks',
|
||||
'Class:lnkInfraError+' => 'Infra related to a known error',
|
||||
'Class:lnkInfraError/Attribute:infra_id' => 'CI',
|
||||
'Class:lnkInfraError/Attribute:infra_id+' => '',
|
||||
'Class:lnkInfraError/Attribute:infra_name' => 'CI Name',
|
||||
'Class:lnkInfraError/Attribute:infra_name+' => '',
|
||||
'Class:lnkInfraError/Attribute:infra_status' => 'CI Status',
|
||||
'Class:lnkInfraError/Attribute:infra_status+' => '',
|
||||
'Class:lnkInfraError/Attribute:error_id' => 'Error',
|
||||
'Class:lnkInfraError/Attribute:error_id+' => '',
|
||||
'Class:lnkInfraError/Attribute:error_name' => 'Error name',
|
||||
'Class:lnkInfraError/Attribute:error_name+' => '',
|
||||
'Class:lnkInfraError/Attribute:reason' => 'Reason',
|
||||
'Class:lnkInfraError/Attribute:reason+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkDocumentError
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkDocumentError' => 'DocumentsErrorLinks',
|
||||
'Class:lnkDocumentError+' => 'A link between a document and a known error',
|
||||
'Class:lnkDocumentError/Attribute:doc_id' => 'Document',
|
||||
'Class:lnkDocumentError/Attribute:doc_id+' => '',
|
||||
'Class:lnkDocumentError/Attribute:doc_name' => 'Document Name',
|
||||
'Class:lnkDocumentError/Attribute:doc_name+' => '',
|
||||
'Class:lnkDocumentError/Attribute:error_id' => 'Error',
|
||||
'Class:lnkDocumentError/Attribute:error_id+' => '',
|
||||
'Class:lnkDocumentError/Attribute:error_name' => 'Error Name',
|
||||
'Class:lnkDocumentError/Attribute:error_name+' => '',
|
||||
'Class:lnkDocumentError/Attribute:link_type' => 'Information',
|
||||
'Class:lnkDocumentError/Attribute:link_type+' => '',
|
||||
));
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Menu:NewError' => 'New Known Error',
|
||||
'Menu:NewError+' => 'Creation of a new known error',
|
||||
'Menu:SearchError' => 'Search for Known Errors',
|
||||
'Menu:SearchError+' => 'Search for Known Errors',
|
||||
'Menu:Problem:KnownErrors' => 'All Known Errors',
|
||||
'Menu:Problem:KnownErrors+' => 'All Known Errors',
|
||||
));
|
||||
|
||||
?>
|
||||
@@ -209,17 +209,21 @@ class Problem extends Ticket
|
||||
|
||||
public function ComputeValues()
|
||||
{
|
||||
// Compute the priority of the ticket
|
||||
$this->Set('priority', $this->ComputePriority());
|
||||
// Compute the priority of the ticket
|
||||
$this->Set('priority', $this->ComputePriority());
|
||||
|
||||
$iKey = $this->GetKey();
|
||||
if ($iKey < 0)
|
||||
$sCurrRef = $this->Get('ref');
|
||||
if (strlen($sCurrRef) == 0)
|
||||
{
|
||||
// Object not yet in the Database
|
||||
$iKey = MetaModel::GetNextKey(get_class($this));
|
||||
$iKey = $this->GetKey();
|
||||
if ($iKey < 0)
|
||||
{
|
||||
// Object not yet in the Database
|
||||
$iKey = MetaModel::GetNextKey(get_class($this));
|
||||
}
|
||||
$sName = sprintf('P-%06d', $iKey);
|
||||
$this->Set('ref', $sName);
|
||||
}
|
||||
$sName = sprintf('P-%06d', $iKey);
|
||||
$this->Set('ref', $sName);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ SetupWebPage::AddModule(
|
||||
'es_cr.dict.itop-problem-mgmt.php',
|
||||
'fr.dict.itop-problem-mgmt.php',
|
||||
'de.dict.itop-problem-mgmt.php',
|
||||
'pt_br.dict.itop-problem-mgmt.php',
|
||||
),
|
||||
'data.struct' => array(
|
||||
//'data.struct.itop-problem-mgmt.xml',
|
||||
|
||||
138
modules/itop-problem-mgmt-1.0.0/pt_br.dict.itop-problem-mgmt.php
Normal file
138
modules/itop-problem-mgmt-1.0.0/pt_br.dict.itop-problem-mgmt.php
Normal file
@@ -0,0 +1,138 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Menu:ProblemManagement' => 'Gerenciamento Problemas',
|
||||
'Menu:ProblemManagement+' => 'Gerenciamento Problemas',
|
||||
'Menu:Problem:Overview' => 'Visão geral',
|
||||
'Menu:Problem:Overview+' => 'Visão geral',
|
||||
'Menu:NewProblem' => 'Novo Problema',
|
||||
'Menu:NewProblem+' => 'Novo Problema',
|
||||
'Menu:SearchProblems' => 'Pesquisa para Problemas',
|
||||
'Menu:SearchProblems+' => 'Pesquisa para Problemas',
|
||||
'Menu:Problem:Shortcuts' => 'Atalhos',
|
||||
'Menu:Problem:MyProblems' => 'My Problems',
|
||||
'Menu:Problem:MyProblems+' => 'My Problems',
|
||||
'Menu:Problem:OpenProblems' => 'Todos Problemas abertos',
|
||||
'Menu:Problem:OpenProblems+' => 'Todos Problemas abertos',
|
||||
'UI-ProblemManagementOverview-ProblemByService' => 'Problems by Service',
|
||||
'UI-ProblemManagementOverview-ProblemByService+' => 'Problems by Service',
|
||||
'UI-ProblemManagementOverview-ProblemByPriority' => 'Problems by Priority',
|
||||
'UI-ProblemManagementOverview-ProblemByPriority+' => 'Problems by Priority',
|
||||
'UI-ProblemManagementOverview-ProblemUnassigned' => 'Unassigned Problems',
|
||||
'UI-ProblemManagementOverview-ProblemUnassigned+' => 'Unassigned Problems',
|
||||
'UI:ProblemMgmtMenuOverview:Title' => 'Dashboard for Problem Management',
|
||||
'UI:ProblemMgmtMenuOverview:Title+' => 'Dashboard for Problem Management',
|
||||
|
||||
));
|
||||
//
|
||||
// Class: Problem
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Problem' => 'Problema',
|
||||
'Class:Problem+' => '',
|
||||
'Class:Problem/Attribute: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',
|
||||
'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',
|
||||
'Class:Problem/Attribute:org_id+' => '',
|
||||
'Class:Problem/Attribute:org_name' => 'Name',
|
||||
'Class:Problem/Attribute:org_name+' => 'Common name',
|
||||
'Class:Problem/Attribute:service_id' => 'Service',
|
||||
'Class:Problem/Attribute:service_id+' => '',
|
||||
'Class:Problem/Attribute:service_name' => 'Name',
|
||||
'Class:Problem/Attribute:service_name+' => '',
|
||||
'Class:Problem/Attribute:servicesubcategory_id' => 'Service Category',
|
||||
'Class:Problem/Attribute:servicesubcategory_id+' => '',
|
||||
'Class:Problem/Attribute:servicesubcategory_name' => 'Name',
|
||||
'Class:Problem/Attribute:servicesubcategory_name+' => '',
|
||||
'Class:Problem/Attribute:product' => 'Product',
|
||||
'Class:Problem/Attribute:product+' => '',
|
||||
'Class:Problem/Attribute:impact' => 'Impact',
|
||||
'Class:Problem/Attribute:impact+' => '',
|
||||
'Class:Problem/Attribute:impact/Value:1' => 'A Person',
|
||||
'Class:Problem/Attribute:impact/Value:1+' => '',
|
||||
'Class:Problem/Attribute:impact/Value:2' => 'A Service',
|
||||
'Class:Problem/Attribute:impact/Value:2+' => '',
|
||||
'Class:Problem/Attribute:impact/Value:3' => 'A Department',
|
||||
'Class:Problem/Attribute:impact/Value:3+' => '',
|
||||
'Class:Problem/Attribute:urgency' => 'Urgency',
|
||||
'Class:Problem/Attribute:urgency+' => '',
|
||||
'Class:Problem/Attribute:urgency/Value:1' => 'Low',
|
||||
'Class:Problem/Attribute:urgency/Value:1+' => 'Low',
|
||||
'Class:Problem/Attribute:urgency/Value:2' => 'Medium',
|
||||
'Class:Problem/Attribute:urgency/Value:2+' => 'Medium',
|
||||
'Class:Problem/Attribute:urgency/Value:3' => 'High',
|
||||
'Class:Problem/Attribute:urgency/Value:3+' => 'High',
|
||||
'Class:Problem/Attribute:priority' => 'Priority',
|
||||
'Class:Problem/Attribute:priority+' => '',
|
||||
'Class:Problem/Attribute:priority/Value:1' => 'Low',
|
||||
'Class:Problem/Attribute:priority/Value:1+' => '',
|
||||
'Class:Problem/Attribute:priority/Value:2' => 'Medium',
|
||||
'Class:Problem/Attribute:priority/Value:2+' => '',
|
||||
'Class:Problem/Attribute:priority/Value:3' => 'High',
|
||||
'Class:Problem/Attribute:priority/Value:3+' => '',
|
||||
'Class:Problem/Attribute:workgroup_id' => 'WorkGroup',
|
||||
'Class:Problem/Attribute:workgroup_id+' => '',
|
||||
'Class:Problem/Attribute:workgroup_name' => 'Name',
|
||||
'Class:Problem/Attribute:workgroup_name+' => '',
|
||||
'Class:Problem/Attribute:agent_id' => 'Agent',
|
||||
'Class:Problem/Attribute:agent_id+' => '',
|
||||
'Class:Problem/Attribute:agent_name' => 'Agent Name',
|
||||
'Class:Problem/Attribute:agent_name+' => '',
|
||||
'Class:Problem/Attribute:agent_email' => 'Agent Email',
|
||||
'Class:Problem/Attribute:agent_email+' => '',
|
||||
'Class:Problem/Attribute:related_change_id' => 'Related Change',
|
||||
'Class:Problem/Attribute:related_change_id+' => '',
|
||||
'Class:Problem/Attribute:related_change_ref' => 'Ref',
|
||||
'Class:Problem/Attribute:related_change_ref+' => '',
|
||||
'Class:Problem/Attribute:close_date' => 'Close Date',
|
||||
'Class:Problem/Attribute:close_date+' => '',
|
||||
'Class:Problem/Attribute:last_update' => 'Last Update',
|
||||
'Class:Problem/Attribute:last_update+' => '',
|
||||
'Class:Problem/Attribute:assignment_date' => 'Assignment Date',
|
||||
'Class:Problem/Attribute:assignment_date+' => '',
|
||||
'Class:Problem/Attribute:resolution_date' => 'Resolution Date',
|
||||
'Class:Problem/Attribute:resolution_date+' => '',
|
||||
'Class:Problem/Attribute:knownerrors_list' => 'Known Errors',
|
||||
'Class:Problem/Attribute:knownerrors_list+' => '',
|
||||
'Class:Problem/Stimulus:ev_assign' => 'Assign',
|
||||
'Class:Problem/Stimulus:ev_assign+' => '',
|
||||
'Class:Problem/Stimulus:ev_reassign' => 'Reaassign',
|
||||
'Class:Problem/Stimulus:ev_reassign+' => '',
|
||||
'Class:Problem/Stimulus:ev_resolve' => 'Resolve',
|
||||
'Class:Problem/Stimulus:ev_resolve+' => '',
|
||||
'Class:Problem/Stimulus:ev_close' => 'Close',
|
||||
'Class:Problem/Stimulus:ev_close+' => '',
|
||||
));
|
||||
?>
|
||||
@@ -59,6 +59,14 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:UserRequest' => 'Benutzeranfrage',
|
||||
'Class:UserRequest+' => '',
|
||||
'Class:UserRequest/Attribute:request_type' => 'Art der Anfrage',
|
||||
'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' => 'Problem',
|
||||
'Class:UserRequest/Attribute:request_type/Value:issue+' => 'Problem',
|
||||
'Class:UserRequest/Attribute:request_type/Value:service request' => 'Service-Anfrage',
|
||||
'Class:UserRequest/Attribute:request_type/Value:service request+' => 'Service-Anfrage',
|
||||
'Class:UserRequest/Attribute:freeze_reason' => 'Grund für nicht erledigen',
|
||||
'Class:UserRequest/Attribute:freeze_reason+' => '',
|
||||
'Class:UserRequest/Stimulus:ev_assign' => 'Zuteilen',
|
||||
|
||||
@@ -75,14 +75,19 @@ class UserRequest extends ResponseTicket
|
||||
|
||||
public function ComputeValues()
|
||||
{
|
||||
$iKey = $this->GetKey();
|
||||
if ($iKey < 0)
|
||||
$sCurrRef = $this->Get('ref');
|
||||
if (strlen($sCurrRef) == 0)
|
||||
{
|
||||
// Object not yet in the Database
|
||||
$iKey = MetaModel::GetNextKey(get_class($this));
|
||||
$iKey = $this->GetKey();
|
||||
if ($iKey < 0)
|
||||
{
|
||||
// Object not yet in the Database
|
||||
$iKey = MetaModel::GetNextKey(get_class($this));
|
||||
}
|
||||
$sName = sprintf('R-%06d', $iKey);
|
||||
$this->Set('ref', $sName);
|
||||
}
|
||||
$sName = sprintf('R-%06d', $iKey);
|
||||
$this->Set('ref', $sName);
|
||||
|
||||
return parent::ComputeValues();
|
||||
}
|
||||
|
||||
@@ -99,7 +104,7 @@ class UserRequest extends ResponseTicket
|
||||
|
||||
case 'escalated_tto':
|
||||
case 'escalated_ttr':
|
||||
$sIconName = self::MakeIconFromName('user-request-escalated.png');
|
||||
$sIcon = self::MakeIconFromName('user-request-escalated.png');
|
||||
break;
|
||||
|
||||
case 'resolved':
|
||||
|
||||
@@ -29,6 +29,7 @@ SetupWebPage::AddModule(
|
||||
'fr.dict.itop-request-mgmt.php',
|
||||
'es_cr.dict.itop-request-mgmt.php',
|
||||
'de.dict.itop-request-mgmt.php',
|
||||
'pt_br.dict.itop-request-mgmt.php',
|
||||
),
|
||||
'data.struct' => array(
|
||||
'data.struct.ta-triggers.xml',
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Menu:RequestManagement' => 'Help Desk',
|
||||
'Menu:RequestManagement+' => 'Help Desk',
|
||||
'Menu:UserRequest:Overview' => 'Visão geral',
|
||||
'Menu:UserRequest:Overview+' => 'Visão geral',
|
||||
'Menu:NewUserRequest' => 'Novo Chamado',
|
||||
'Menu:NewUserRequest+' => 'Novo Chamado',
|
||||
'Menu:SearchUserRequests' => 'Pesquisa para Chamados',
|
||||
'Menu:SearchUserRequests+' => 'Pesquisa para Chamados',
|
||||
'Menu:UserRequest:Shortcuts' => 'Atalhos',
|
||||
'Menu:UserRequest:Shortcuts+' => '',
|
||||
'Menu:UserRequest:MyRequests' => 'Chamados atribuádos para mim',
|
||||
'Menu:UserRequest:MyRequests+' => 'Chamados atribuádos para mim (como Agente)',
|
||||
'Menu:UserRequest:EscalatedRequests' => 'Chamados encaminhados',
|
||||
'Menu:UserRequest:EscalatedRequests+' => 'Chamados encaminhados',
|
||||
'Menu:UserRequest:OpenRequests' => 'Todos chamados abertos',
|
||||
'Menu:UserRequest:OpenRequests+' => 'Todos chamados abertos',
|
||||
));
|
||||
|
||||
// Dictionnay conventions
|
||||
// Class:<class_name>
|
||||
// Class:<class_name>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>
|
||||
// Class:<class_name>/Attribute:<attribute_code>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>+
|
||||
|
||||
//
|
||||
// Class: UserRequest
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:UserRequest' => 'Usuário solicitante',
|
||||
'Class:UserRequest+' => '',
|
||||
'Class:UserRequest/Attribute:freeze_reason' => 'Pending reason',
|
||||
'Class:UserRequest/Attribute:freeze_reason+' => '',
|
||||
'Class:UserRequest/Stimulus:ev_assign' => 'Atribuír',
|
||||
'Class:UserRequest/Stimulus:ev_assign+' => '',
|
||||
'Class:UserRequest/Stimulus:ev_freeze' => 'Marque como pendente',
|
||||
'Class:UserRequest/Stimulus:ev_freeze+' => '',
|
||||
'Class:UserRequest/Stimulus:ev_reassign' => 'Re-atribuír',
|
||||
'Class:UserRequest/Stimulus:ev_reassign+' => '',
|
||||
'Class:UserRequest/Stimulus:ev_timeout' => 'ev_timeout',
|
||||
'Class:UserRequest/Stimulus:ev_timeout+' => '',
|
||||
'Class:UserRequest/Stimulus:ev_resolve' => 'Marque como resolvido',
|
||||
'Class:UserRequest/Stimulus:ev_resolve+' => '',
|
||||
'Class:UserRequest/Stimulus:ev_close' => 'Fechado',
|
||||
'Class:UserRequest/Stimulus:ev_close+' => '',
|
||||
));
|
||||
|
||||
?>
|
||||
@@ -82,7 +82,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:Contract/Attribute:name+' => '',
|
||||
'Class:Contract/Attribute:description' => 'Description',
|
||||
'Class:Contract/Attribute:description+' => '',
|
||||
'Class:Contract/Attribute:start_date' => 'Start data',
|
||||
'Class:Contract/Attribute:start_date' => 'Start date',
|
||||
'Class:Contract/Attribute:start_date+' => '',
|
||||
'Class:Contract/Attribute:end_date' => 'End date',
|
||||
'Class:Contract/Attribute:end_date+' => '',
|
||||
@@ -151,27 +151,27 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:CustomerContract/Attribute:provider_list' => 'Underpinning Contracts',
|
||||
'Class:CustomerContract/Attribute:sla_list+' => '',
|
||||
));
|
||||
//
|
||||
// Class: lnkCustomerContractToProviderContract
|
||||
//
|
||||
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:lnkCustomerContractToProviderContract' => 'lnkCustomerContractToProviderContract',
|
||||
'Class:lnkCustomerContractToProviderContract+' => '',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id' => 'Customer Contract',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id+' => '',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name' => 'Name',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name+' => '',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id' => 'Provider Contract',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id+' => '',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name' => 'Name',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name+' => '',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla' => 'Provider SLA',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla+' => 'Service Level Agreement',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage' => 'Service hours',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkCustomerContractToProviderContract
|
||||
//
|
||||
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:lnkCustomerContractToProviderContract' => 'lnkCustomerContractToProviderContract',
|
||||
'Class:lnkCustomerContractToProviderContract+' => '',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id' => 'Customer Contract',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id+' => '',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name' => 'Name',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name+' => '',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id' => 'Provider Contract',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id+' => '',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name' => 'Name',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name+' => '',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla' => 'Provider SLA',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla+' => 'Service Level Agreement',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage' => 'Service hours',
|
||||
'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage+' => '',
|
||||
));
|
||||
|
||||
|
||||
//
|
||||
// Class: lnkContractToSLA
|
||||
@@ -290,8 +290,8 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:Service/Attribute:document_list+' => 'Documents attached to the service',
|
||||
'Class:Service/Attribute:contact_list' => 'Contacts',
|
||||
'Class:Service/Attribute:contact_list+' => 'Contacts having a role for this service',
|
||||
'Class:Service/Tab:Related_Contracts' => 'Related Contracts',
|
||||
'Class:Service/Tab:Related_Contracts+' => 'Contracts signed for this service',
|
||||
'Class:Service/Tab:Related_Contracts' => 'Related Contracts',
|
||||
'Class:Service/Tab:Related_Contracts+' => 'Contracts signed for this service',
|
||||
));
|
||||
|
||||
//
|
||||
|
||||
@@ -28,6 +28,7 @@ SetupWebPage::AddModule(
|
||||
'fr.dict.itop-service-mgmt.php',
|
||||
'es_cr.dict.itop-service-mgmt.php',
|
||||
'de.dict.itop-service-mgmt.php',
|
||||
'pt_br.dict.itop-service-mgmt.php',
|
||||
),
|
||||
'data.struct' => array(
|
||||
//'data.struct.itop-service-mgmt.xml',
|
||||
|
||||
430
modules/itop-service-mgmt-1.0.0/pt_br.dict.itop-service-mgmt.php
Normal file
430
modules/itop-service-mgmt-1.0.0/pt_br.dict.itop-service-mgmt.php
Normal file
@@ -0,0 +1,430 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
// Dictionnay conventions
|
||||
// Class:<class_name>
|
||||
// Class:<class_name>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>
|
||||
// Class:<class_name>/Attribute:<attribute_code>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>+
|
||||
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Menu:ServiceManagement' => 'Gerenciamento Serviços',
|
||||
'Menu:ServiceManagement+' => 'Visão geral Gerenciamento Serviços',
|
||||
'Menu:Service:Overview' => 'Visão geral',
|
||||
'Menu:Service:Overview+' => '',
|
||||
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Contratos por nível de serviço',
|
||||
'UI-ServiceManagementMenu-ContractsByStatus' => 'Contratos por status',
|
||||
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contratos terminando em menos de 30 dias',
|
||||
|
||||
'Menu:ServiceType' => 'Tipos Serviços',
|
||||
'Menu:ServiceType+' => 'Tipos Serviços',
|
||||
'Menu:ProviderContract' => 'Contratos Provedor(as)',
|
||||
'Menu:ProviderContract+' => 'Contratos Provedor',
|
||||
'Menu:CustomerContract' => 'Contratos Clientes',
|
||||
'Menu:CustomerContract+' => 'Contratos Clientes',
|
||||
'Menu:ServiceSubcategory' => 'Sub-categorias Serviços',
|
||||
'Menu:ServiceSubcategory+' => 'Sub-categorias Serviços',
|
||||
'Menu:Service' => 'Serviços',
|
||||
'Menu:Service+' => 'Serviços',
|
||||
'Menu:SLA' => 'SLAs',
|
||||
'Menu:SLA+' => 'Service Level Agreements',
|
||||
'Menu:SLT' => 'SLTs',
|
||||
'Menu:SLT+' => 'Service Level Targets',
|
||||
|
||||
));
|
||||
|
||||
|
||||
/*
|
||||
'UI:ServiceManagementMenu' => 'Gestion des Services',
|
||||
'UI:ServiceManagementMenu+' => 'Gestion des Services',
|
||||
'UI:ServiceManagementMenu:Title' => 'Résumé des services & contrats',
|
||||
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Contrats par niveau de service',
|
||||
'UI-ServiceManagementMenu-ContractsByStatus' => 'Contrats par état',
|
||||
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contrats se terminant dans moins de 30 jours',
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Class: Contract
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Contract' => 'Contratos',
|
||||
'Class:Contract+' => '',
|
||||
'Class:Contract/Attribute:name' => 'Nome',
|
||||
'Class:Contract/Attribute:name+' => '',
|
||||
'Class:Contract/Attribute:description' => 'Descrição',
|
||||
'Class:Contract/Attribute:description+' => '',
|
||||
'Class:Contract/Attribute:start_date' => 'Data início',
|
||||
'Class:Contract/Attribute:start_date+' => '',
|
||||
'Class:Contract/Attribute:end_date' => 'Data término',
|
||||
'Class:Contract/Attribute:end_date+' => '',
|
||||
'Class:Contract/Attribute:cost' => 'Valor',
|
||||
'Class:Contract/Attribute:cost+' => '',
|
||||
'Class:Contract/Attribute:cost_currency' => 'Moeda atual',
|
||||
'Class:Contract/Attribute:cost_currency+' => '',
|
||||
'Class:Contract/Attribute:cost_currency/Value:dollars' => 'Dollars',
|
||||
'Class:Contract/Attribute:cost_currency/Value:dollars+' => '',
|
||||
'Class:Contract/Attribute:cost_currency/Value:euros' => 'Euros',
|
||||
'Class:Contract/Attribute:cost_currency/Value:euros+' => '',
|
||||
'Class:Contract/Attribute:cost_unit' => 'Valor unitário',
|
||||
'Class:Contract/Attribute:cost_unit+' => '',
|
||||
'Class:Contract/Attribute:billing_frequency' => 'Frequência pagamento',
|
||||
'Class:Contract/Attribute:billing_frequency+' => '',
|
||||
'Class:Contract/Attribute:contact_list' => 'Contatos',
|
||||
'Class:Contract/Attribute:contact_list+' => 'Contatos relacionado para ocontrato',
|
||||
'Class:Contract/Attribute:document_list' => 'Documentos',
|
||||
'Class:Contract/Attribute:document_list+' => 'Documentos anexados para o contrato',
|
||||
'Class:Contract/Attribute:ci_list' => 'CIs',
|
||||
'Class:Contract/Attribute:ci_list+' => 'CI suportado para o contrato contrato',
|
||||
'Class:Contract/Attribute:finalclass' => 'Tipo',
|
||||
'Class:Contract/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ProviderContract
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:ProviderContract' => 'Contrato Provedor',
|
||||
'Class:ProviderContract+' => '',
|
||||
'Class:ProviderContract/Attribute:provider_id' => 'Provedor',
|
||||
'Class:ProviderContract/Attribute:provider_id+' => '',
|
||||
'Class:ProviderContract/Attribute:provider_name' => 'Nome Provedor',
|
||||
'Class:ProviderContract/Attribute:provider_name+' => '',
|
||||
'Class:ProviderContract/Attribute:sla' => 'SLA',
|
||||
'Class:ProviderContract/Attribute:sla+' => 'Service Level Agreement',
|
||||
'Class:ProviderContract/Attribute:coverage' => 'Cobertura',
|
||||
'Class:ProviderContract/Attribute:coverage+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CustomerContract
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:CustomerContract' => 'Contrato Cliente',
|
||||
'Class:CustomerContract+' => '',
|
||||
'Class:CustomerContract/Attribute:org_id' => 'Cliente',
|
||||
'Class:CustomerContract/Attribute:org_id+' => '',
|
||||
'Class:CustomerContract/Attribute:org_name' => 'Nome cliente',
|
||||
'Class:CustomerContract/Attribute:org_name+' => '',
|
||||
'Class:CustomerContract/Attribute:provider_id' => 'Provedor',
|
||||
'Class:CustomerContract/Attribute:provider_id+' => '',
|
||||
'Class:CustomerContract/Attribute:provider_name' => 'Nome provedor',
|
||||
'Class:CustomerContract/Attribute:provider_name+' => '',
|
||||
'Class:CustomerContract/Attribute:support_team_id' => 'Equipe suporte',
|
||||
'Class:CustomerContract/Attribute:support_team_id+' => '',
|
||||
'Class:CustomerContract/Attribute:support_team_name' => 'Equipe suporte',
|
||||
'Class:CustomerContract/Attribute:support_team_name+' => '',
|
||||
'Class:CustomerContract/Attribute:provider_list' => 'Provedores',
|
||||
'Class:CustomerContract/Attribute:provider_list+' => '',
|
||||
'Class:CustomerContract/Attribute:sla_list' => 'SLAs',
|
||||
'Class:CustomerContract/Attribute:sla_list+' => 'Lista de SLA relacionado ao contrato',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkContractToSLA
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkContractToSLA' => 'Contrato/SLA',
|
||||
'Class:lnkContractToSLA+' => '',
|
||||
'Class:lnkContractToSLA/Attribute:contract_id' => 'Contrato',
|
||||
'Class:lnkContractToSLA/Attribute:contract_id+' => '',
|
||||
'Class:lnkContractToSLA/Attribute:contract_name' => 'Contrato',
|
||||
'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' => 'Cobertura',
|
||||
'Class:lnkContractToSLA/Attribute:coverage+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkContractToDoc
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkContractToDoc' => 'Contrato/Doc',
|
||||
'Class:lnkContractToDoc+' => '',
|
||||
'Class:lnkContractToDoc/Attribute:contract_id' => 'Contrato',
|
||||
'Class:lnkContractToDoc/Attribute:contract_id+' => '',
|
||||
'Class:lnkContractToDoc/Attribute:contract_name' => 'Contrato',
|
||||
'Class:lnkContractToDoc/Attribute:contract_name+' => '',
|
||||
'Class:lnkContractToDoc/Attribute:document_id' => 'Documento',
|
||||
'Class:lnkContractToDoc/Attribute:document_id+' => '',
|
||||
'Class:lnkContractToDoc/Attribute:document_name' => 'Documento',
|
||||
'Class:lnkContractToDoc/Attribute:document_name+' => '',
|
||||
'Class:lnkContractToDoc/Attribute:document_type' => 'Tipo documento',
|
||||
'Class:lnkContractToDoc/Attribute:document_type+' => '',
|
||||
'Class:lnkContractToDoc/Attribute:document_status' => 'Status documento',
|
||||
'Class:lnkContractToDoc/Attribute:document_status+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkContractToContact
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkContractToContact' => 'Contrato/Contato',
|
||||
'Class:lnkContractToContact+' => '',
|
||||
'Class:lnkContractToContact/Attribute:contract_id' => 'Contrato',
|
||||
'Class:lnkContractToContact/Attribute:contract_id+' => '',
|
||||
'Class:lnkContractToContact/Attribute:contract_name' => 'Contrato',
|
||||
'Class:lnkContractToContact/Attribute:contract_name+' => '',
|
||||
'Class:lnkContractToContact/Attribute:contact_id' => 'Contato',
|
||||
'Class:lnkContractToContact/Attribute:contact_id+' => '',
|
||||
'Class:lnkContractToContact/Attribute:contact_name' => 'Contato',
|
||||
'Class:lnkContractToContact/Attribute:contact_name+' => '',
|
||||
'Class:lnkContractToContact/Attribute:contact_email' => 'Contato email',
|
||||
'Class:lnkContractToContact/Attribute:contact_email+' => '',
|
||||
'Class:lnkContractToContact/Attribute:role' => 'Regras',
|
||||
'Class:lnkContractToContact/Attribute:role+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkContractToCI
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkContractToCI' => 'Contrato/CI',
|
||||
'Class:lnkContractToCI+' => '',
|
||||
'Class:lnkContractToCI/Attribute:contract_id' => 'Contrato',
|
||||
'Class:lnkContractToCI/Attribute:contract_id+' => '',
|
||||
'Class:lnkContractToCI/Attribute:contract_name' => 'Contrato',
|
||||
'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 status',
|
||||
'Class:lnkContractToCI/Attribute:ci_status+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Service
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Service' => 'Serviço',
|
||||
'Class:Service+' => '',
|
||||
'Class:Service/Attribute:org_id' => 'Provedor',
|
||||
'Class:Service/Attribute:org_id+' => '',
|
||||
'Class:Service/Attribute:provider_name' => 'Provedor',
|
||||
'Class:Service/Attribute:provider_name+' => '',
|
||||
'Class:Service/Attribute:name' => 'Nome',
|
||||
'Class:Service/Attribute:name+' => '',
|
||||
'Class:Service/Attribute:description' => 'Descrição',
|
||||
'Class:Service/Attribute:description+' => '',
|
||||
'Class:Service/Attribute:type' => 'Tipo',
|
||||
'Class:Service/Attribute:type+' => '',
|
||||
'Class:Service/Attribute:type/Value:IncidentManagement' => 'Gerenciamento Incidentes',
|
||||
'Class:Service/Attribute:type/Value:IncidentManagement+' => 'Gerenciamento Incidentes',
|
||||
'Class:Service/Attribute:type/Value:RequestManagement' => 'Gerenciamento Pedidos',
|
||||
'Class:Service/Attribute:type/Value:RequestManagement+' => 'Gerenciamento Pedidos',
|
||||
'Class:Service/Attribute:status' => 'Status',
|
||||
'Class:Service/Attribute:status+' => '',
|
||||
'Class:Service/Attribute:status/Value:design' => 'Design',
|
||||
'Class:Service/Attribute:status/Value:design+' => '',
|
||||
'Class:Service/Attribute:status/Value:obsolete' => 'Obsoleto',
|
||||
'Class:Service/Attribute:status/Value:obsolete+' => '',
|
||||
'Class:Service/Attribute:status/Value:production' => 'Produção',
|
||||
'Class:Service/Attribute:status/Value:production+' => '',
|
||||
'Class:Service/Attribute:subcategory_list' => 'Sub-categoria Serviço',
|
||||
'Class:Service/Attribute:subcategory_list+' => '',
|
||||
'Class:Service/Attribute:sla_list' => 'SLAs',
|
||||
'Class:Service/Attribute:sla_list+' => '',
|
||||
'Class:Service/Attribute:document_list' => 'Documentos',
|
||||
'Class:Service/Attribute:document_list+' => 'Documentos anexado para o serviço',
|
||||
'Class:Service/Attribute:contact_list' => 'Contatos',
|
||||
'Class:Service/Attribute:contact_list+' => 'Contatos tendo um papel para este serviço',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ServiceSubcategory
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:ServiceSubcategory' => 'Sub-categoria Serviço',
|
||||
'Class:ServiceSubcategory+' => '',
|
||||
'Class:ServiceSubcategory/Attribute:name' => 'Nome',
|
||||
'Class:ServiceSubcategory/Attribute:name+' => '',
|
||||
'Class:ServiceSubcategory/Attribute:description' => 'Descrição',
|
||||
'Class:ServiceSubcategory/Attribute:description+' => '',
|
||||
'Class:ServiceSubcategory/Attribute:service_id' => 'Serviço',
|
||||
'Class:ServiceSubcategory/Attribute:service_id+' => '',
|
||||
'Class:ServiceSubcategory/Attribute:service_name' => 'Serviço',
|
||||
'Class:ServiceSubcategory/Attribute:service_name+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: SLA
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:SLA' => 'SLA',
|
||||
'Class:SLA+' => '',
|
||||
'Class:SLA/Attribute:name' => 'Nome',
|
||||
'Class:SLA/Attribute:name+' => '',
|
||||
'Class:SLA/Attribute:service_id' => 'Serviço',
|
||||
'Class:SLA/Attribute:service_id+' => '',
|
||||
'Class:SLA/Attribute:service_name' => 'Serviço',
|
||||
'Class:SLA/Attribute:service_name+' => '',
|
||||
'Class:SLA/Attribute:slt_list' => 'SLTs',
|
||||
'Class:SLA/Attribute:slt_list+' => 'Lista Service Level Thresholds',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: SLT
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:SLT' => 'SLT',
|
||||
'Class:SLT+' => '',
|
||||
'Class:SLT/Attribute:name' => 'Nome',
|
||||
'Class:SLT/Attribute:name+' => '',
|
||||
'Class:SLT/Attribute:metric' => 'Métrica',
|
||||
'Class:SLT/Attribute:metric+' => '',
|
||||
'Class:SLT/Attribute:metric/Value:TTO' => 'TTO',
|
||||
'Class:SLT/Attribute:metric/Value:TTO+' => 'TTO',
|
||||
'Class:SLT/Attribute:metric/Value:TTR' => 'TTR',
|
||||
'Class:SLT/Attribute:metric/Value:TTR+' => 'TTR',
|
||||
'Class:SLT/Attribute:ticket_priority' => 'Ticket prioridade',
|
||||
'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' => 'Valor',
|
||||
'Class:SLT/Attribute:value+' => '',
|
||||
'Class:SLT/Attribute:value_unit' => 'Unidade',
|
||||
'Class:SLT/Attribute:value_unit+' => '',
|
||||
'Class:SLT/Attribute:value_unit/Value:days' => 'dias',
|
||||
'Class:SLT/Attribute:value_unit/Value:days+' => 'dias',
|
||||
'Class:SLT/Attribute:value_unit/Value:hours' => 'horas',
|
||||
'Class:SLT/Attribute:value_unit/Value:hours+' => 'horas',
|
||||
'Class:SLT/Attribute:value_unit/Value:minutes' => 'minutos',
|
||||
'Class:SLT/Attribute:value_unit/Value:minutes+' => 'minutos',
|
||||
'Class:SLT/Attribute:sla_list' => 'SLAs',
|
||||
'Class:SLT/Attribute:sla_list+' => 'SLAs utilizando o SLT',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkSLTToSLA
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'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' => 'Métrica',
|
||||
'Class:lnkSLTToSLA/Attribute:slt_metric+' => '',
|
||||
'Class:lnkSLTToSLA/Attribute:slt_ticket_priority' => 'Ticket prioridade',
|
||||
'Class:lnkSLTToSLA/Attribute:slt_ticket_priority+' => '',
|
||||
'Class:lnkSLTToSLA/Attribute:slt_value' => 'Valor',
|
||||
'Class:lnkSLTToSLA/Attribute:slt_value+' => '',
|
||||
'Class:lnkSLTToSLA/Attribute:slt_value_unit' => 'Unidade',
|
||||
'Class:lnkSLTToSLA/Attribute:slt_value_unit+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkServiceToDoc
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkServiceToDoc' => 'Serviço/Doc',
|
||||
'Class:lnkServiceToDoc+' => '',
|
||||
'Class:lnkServiceToDoc/Attribute:service_id' => 'Serviço',
|
||||
'Class:lnkServiceToDoc/Attribute:service_id+' => '',
|
||||
'Class:lnkServiceToDoc/Attribute:service_name' => 'Serviço',
|
||||
'Class:lnkServiceToDoc/Attribute:service_name+' => '',
|
||||
'Class:lnkServiceToDoc/Attribute:document_id' => 'Documento',
|
||||
'Class:lnkServiceToDoc/Attribute:document_id+' => '',
|
||||
'Class:lnkServiceToDoc/Attribute:document_name' => 'Documento',
|
||||
'Class:lnkServiceToDoc/Attribute:document_name+' => '',
|
||||
'Class:lnkServiceToDoc/Attribute:document_type' => 'Tipo documento',
|
||||
'Class:lnkServiceToDoc/Attribute:document_type+' => '',
|
||||
'Class:lnkServiceToDoc/Attribute:document_status' => 'Status documento',
|
||||
'Class:lnkServiceToDoc/Attribute:document_status+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkServiceToContact
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkServiceToContact' => 'Serviço/Contato',
|
||||
'Class:lnkServiceToContact+' => '',
|
||||
'Class:lnkServiceToContact/Attribute:service_id' => 'Serviço',
|
||||
'Class:lnkServiceToContact/Attribute:service_id+' => '',
|
||||
'Class:lnkServiceToContact/Attribute:service_name' => 'Serviço',
|
||||
'Class:lnkServiceToContact/Attribute:service_name+' => '',
|
||||
'Class:lnkServiceToContact/Attribute:contact_id' => 'Contato',
|
||||
'Class:lnkServiceToContact/Attribute:contact_id+' => '',
|
||||
'Class:lnkServiceToContact/Attribute:contact_name' => 'Contato',
|
||||
'Class:lnkServiceToContact/Attribute:contact_name+' => '',
|
||||
'Class:lnkServiceToContact/Attribute:contact_email' => 'Contato email',
|
||||
'Class:lnkServiceToContact/Attribute:contact_email+' => '',
|
||||
'Class:lnkServiceToContact/Attribute:role' => 'Regra',
|
||||
'Class:lnkServiceToContact/Attribute:role+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkServiceToCI
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkServiceToCI' => 'Serviço/CI',
|
||||
'Class:lnkServiceToCI+' => '',
|
||||
'Class:lnkServiceToCI/Attribute:service_id' => 'Serviço',
|
||||
'Class:lnkServiceToCI/Attribute:service_id+' => '',
|
||||
'Class:lnkServiceToCI/Attribute:service_name' => 'Serviço',
|
||||
'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 status',
|
||||
'Class:lnkServiceToCI/Attribute:ci_status+' => '',
|
||||
));
|
||||
|
||||
|
||||
?>
|
||||
@@ -127,7 +127,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
//
|
||||
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:ResponseTicket' => 'ResponseTicket',
|
||||
'Class:ResponseTicket' => 'Antwortticket',
|
||||
'Class:ResponseTicket+' => '',
|
||||
'Class:ResponseTicket/Attribute:status' => 'Status',
|
||||
'Class:ResponseTicket/Attribute:status+' => '',
|
||||
@@ -141,22 +141,28 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:ResponseTicket/Attribute:status/Value:assigned+' => '',
|
||||
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr' => 'Eskalation/TTR',
|
||||
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr+' => '',
|
||||
'Class:ResponseTicket/Attribute:status/Value:frozen' => 'Anstehend',
|
||||
'Class:ResponseTicket/Attribute:status/Value:frozen+' => '',
|
||||
'Class:ResponseTicket/Attribute:status/Value:resolved' => 'Gelöst',
|
||||
'Class:ResponseTicket/Attribute:status/Value:resolved+' => '',
|
||||
'Class:ResponseTicket/Attribute:status/Value:closed' => 'Geschlossen',
|
||||
'Class:ResponseTicket/Attribute:status/Value:closed+' => '',
|
||||
'Class:ResponseTicket/Attribute:caller_id' => 'Caller',
|
||||
'Class:ResponseTicket/Attribute:caller_id' => 'Melder',
|
||||
'Class:ResponseTicket/Attribute:caller_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:workgroup_name' => 'Arbeitsgruppe',
|
||||
'Class:ResponseTicket/Attribute:workgroup_name+' => '',
|
||||
'Class:ResponseTicket/Attribute:caller_email' => 'Email',
|
||||
'Class:ResponseTicket/Attribute:caller_email+' => '',
|
||||
'Class:ResponseTicket/Attribute:org_id' => 'Kunde',
|
||||
'Class:ResponseTicket/Attribute:org_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:org_name' => 'Kunde',
|
||||
'Class:ResponseTicket/Attribute:org_name+' => '',
|
||||
'Class:ResponseTicket/Attribute:service_id' => 'Service',
|
||||
'Class:ResponseTicket/Attribute:service_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:service_name' => 'Name',
|
||||
'Class:ResponseTicket/Attribute:service_name+' => '',
|
||||
'Class:ResponseTicket/Attribute:servicesubcategory_id' => 'Service-Element',
|
||||
'Class:ResponseTicket/Attribute:servicesubcategory_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:servicesubcategory_name' => 'Name',
|
||||
'Class:ResponseTicket/Attribute:servicesubcategory_name+' => '',
|
||||
'Class:ResponseTicket/Attribute:product' => 'Produkt',
|
||||
'Class:ResponseTicket/Attribute:product+' => '',
|
||||
'Class:ResponseTicket/Attribute:impact' => 'Auswirkung',
|
||||
@@ -185,12 +191,18 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:ResponseTicket/Attribute:priority/Value:3+' => '',
|
||||
'Class:ResponseTicket/Attribute:workgroup_id' => 'Arbeitsgruppe',
|
||||
'Class:ResponseTicket/Attribute:workgroup_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:workgroup_name' => 'Arbeitsgruppe',
|
||||
'Class:ResponseTicket/Attribute:workgroup_name+' => '',
|
||||
'Class:ResponseTicket/Attribute:agent_id' => 'Bearbeiter',
|
||||
'Class:ResponseTicket/Attribute:agent_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:agent_name' => 'Bearbeiter',
|
||||
'Class:ResponseTicket/Attribute:agent_name+' => '',
|
||||
'Class:ResponseTicket/Attribute:agent_email' => 'Agent Email',
|
||||
'Class:ResponseTicket/Attribute:agent_email' => 'Bearbeiter schreiben (Email)',
|
||||
'Class:ResponseTicket/Attribute:agent_email+' => '',
|
||||
'Class:ResponseTicket/Attribute:related_problem_id' => 'Dazugehöriges Problem',
|
||||
'Class:ResponseTicket/Attribute:related_problem_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:related_problem_ref' => 'Referenz',
|
||||
'Class:ResponseTicket/Attribute:related_problem_ref+' => '',
|
||||
'Class:ResponseTicket/Attribute:related_change_id' => 'Verbundene Änderungen',
|
||||
'Class:ResponseTicket/Attribute:related_change_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:related_change_ref' => 'Verbundene Änderungen',
|
||||
@@ -201,8 +213,12 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:ResponseTicket/Attribute:last_update+' => '',
|
||||
'Class:ResponseTicket/Attribute:assignment_date' => 'Zugeteilt',
|
||||
'Class:ResponseTicket/Attribute:assignment_date+' => '',
|
||||
'Class:ResponseTicket/Attribute:escalation_deadline' => 'Eskalationsfrist',
|
||||
'Class:ResponseTicket/Attribute:escalation_deadline+' => '',
|
||||
'Class:ResponseTicket/Attribute:resolution_date' => 'Lösungsdatum',
|
||||
'Class:ResponseTicket/Attribute:resolution_date+' => '',
|
||||
'Class:ResponseTicket/Attribute:tto_escalation_deadline' => 'TTO Eskaltionsfrist',
|
||||
'Class:ResponseTicket/Attribute:tto_escalation_deadline+' => '',
|
||||
'Class:ResponseTicket/Attribute:ttr_escalation_deadline' => 'TTR Eskaltionsfrist',
|
||||
'Class:ResponseTicket/Attribute:ttr_escalation_deadline+' => '',
|
||||
'Class:ResponseTicket/Attribute:closure_deadline' => 'Abschlussfrist',
|
||||
'Class:ResponseTicket/Attribute:closure_deadline+' => '',
|
||||
'Class:ResponseTicket/Attribute:resolution_code' => 'Code für Lösung',
|
||||
|
||||
@@ -28,6 +28,7 @@ SetupWebPage::AddModule(
|
||||
'fr.dict.itop-tickets.php',
|
||||
'es_cr.dict.itop-tickets.php',
|
||||
'de.dict.itop-tickets.php',
|
||||
'pt_br.dict.itop-tickets.php',
|
||||
),
|
||||
'data.struct' => array(
|
||||
'data.struct.ta-actions.xml',
|
||||
|
||||
239
modules/itop-tickets-1.0.0/pt_br.dict.itop-tickets.php
Normal file
239
modules/itop-tickets-1.0.0/pt_br.dict.itop-tickets.php
Normal file
@@ -0,0 +1,239 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
// Dictionnay conventions
|
||||
// Class:<class_name>
|
||||
// Class:<class_name>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>
|
||||
// Class:<class_name>/Attribute:<attribute_code>+
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
|
||||
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>
|
||||
// Class:<class_name>/Stimulus:<stimulus_code>+
|
||||
|
||||
|
||||
//
|
||||
// Class: Ticket
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:Ticket' => 'Ticket',
|
||||
'Class:Ticket+' => '',
|
||||
'Class:Ticket/Attribute:ref' => 'Ref',
|
||||
'Class:Ticket/Attribute:ref+' => '',
|
||||
'Class:Ticket/Attribute:title' => 'Título',
|
||||
'Class:Ticket/Attribute:title+' => '',
|
||||
'Class:Ticket/Attribute:ticket_log' => 'Log',
|
||||
'Class:Ticket/Attribute:ticket_log+' => '',
|
||||
'Class:Ticket/Attribute:start_date' => 'Iniciado',
|
||||
'Class:Ticket/Attribute:start_date+' => '',
|
||||
'Class:Ticket/Attribute:document_list' => 'Documentos',
|
||||
'Class:Ticket/Attribute:document_list+' => 'Documentos relacionado ao ticket',
|
||||
'Class:Ticket/Attribute:ci_list' => 'CIs',
|
||||
'Class:Ticket/Attribute:ci_list+' => 'CIs preocupado com o incidente',
|
||||
'Class:Ticket/Attribute:contact_list' => 'Contatos',
|
||||
'Class:Ticket/Attribute:contact_list+' => 'Equipe(s) e pessoa(s) envolvidas',
|
||||
'Class:Ticket/Attribute:finalclass' => 'Tipo',
|
||||
'Class:Ticket/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkTicketToDoc
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkTicketToDoc' => 'Ticket/Documento',
|
||||
'Class:lnkTicketToDoc+' => '',
|
||||
'Class:lnkTicketToDoc/Attribute:ticket_id' => 'Ticket',
|
||||
'Class:lnkTicketToDoc/Attribute:ticket_id+' => '',
|
||||
'Class:lnkTicketToDoc/Attribute:ticket_ref' => 'Ticket #',
|
||||
'Class:lnkTicketToDoc/Attribute:ticket_ref+' => '',
|
||||
'Class:lnkTicketToDoc/Attribute:document_id' => 'Documento',
|
||||
'Class:lnkTicketToDoc/Attribute:document_id+' => '',
|
||||
'Class:lnkTicketToDoc/Attribute:document_name' => 'Documento',
|
||||
'Class:lnkTicketToDoc/Attribute:document_name+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkTicketToContact
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkTicketToContact' => 'Ticket/Contato',
|
||||
'Class:lnkTicketToContact+' => '',
|
||||
'Class:lnkTicketToContact/Attribute:ticket_id' => 'Ticket',
|
||||
'Class:lnkTicketToContact/Attribute:ticket_id+' => '',
|
||||
'Class:lnkTicketToContact/Attribute:ticket_ref' => 'Ticket #',
|
||||
'Class:lnkTicketToContact/Attribute:ticket_ref+' => '',
|
||||
'Class:lnkTicketToContact/Attribute:contact_id' => 'Contato',
|
||||
'Class:lnkTicketToContact/Attribute:contact_id+' => '',
|
||||
'Class:lnkTicketToContact/Attribute:contact_name' => 'Contato',
|
||||
'Class:lnkTicketToContact/Attribute:contact_name+' => '',
|
||||
'Class:lnkTicketToContact/Attribute:contact_email' => 'Email',
|
||||
'Class:lnkTicketToContact/Attribute:contact_email+' => '',
|
||||
'Class:lnkTicketToContact/Attribute:role' => 'Regra',
|
||||
'Class:lnkTicketToContact/Attribute:role+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkTicketToCI
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:lnkTicketToCI' => 'Ticket/CI',
|
||||
'Class:lnkTicketToCI+' => '',
|
||||
'Class:lnkTicketToCI/Attribute:ticket_id' => 'Ticket',
|
||||
'Class:lnkTicketToCI/Attribute:ticket_id+' => '',
|
||||
'Class:lnkTicketToCI/Attribute:ticket_ref' => 'Ticket #',
|
||||
'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 status',
|
||||
'Class:lnkTicketToCI/Attribute:ci_status+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ResponseTicket
|
||||
//
|
||||
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Class:ResponseTicket' => 'ResponseTicket',
|
||||
'Class:ResponseTicket+' => '',
|
||||
'Class:ResponseTicket/Attribute:status' => 'Status',
|
||||
'Class:ResponseTicket/Attribute:status+' => '',
|
||||
'Class:ResponseTicket/Attribute:status/Value:new' => 'Novo',
|
||||
'Class:ResponseTicket/Attribute:status/Value:new+' => 'novamente aberto',
|
||||
'Class:ResponseTicket/Attribute:status/Value:frozen' => 'Pendente',
|
||||
'Class:ResponseTicket/Attribute:status/Value:frozen+' => '',
|
||||
'Class:ResponseTicket/Attribute:status/Value:escalated_tto' => 'Escalada/TTO',
|
||||
'Class:ResponseTicket/Attribute:status/Value:escalated_tto+' => '',
|
||||
'Class:ResponseTicket/Attribute:status/Value:assigned' => 'Atribuádo',
|
||||
'Class:ResponseTicket/Attribute:status/Value:assigned+' => '',
|
||||
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr' => 'Escalada/TTR',
|
||||
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr+' => '',
|
||||
'Class:ResponseTicket/Attribute:status/Value:resolved' => 'Resolvido',
|
||||
'Class:ResponseTicket/Attribute:status/Value:resolved+' => '',
|
||||
'Class:ResponseTicket/Attribute:status/Value:closed' => 'Fechado',
|
||||
'Class:ResponseTicket/Attribute:status/Value:closed+' => '',
|
||||
'Class:ResponseTicket/Attribute:caller_id' => 'Solicitação',
|
||||
'Class:ResponseTicket/Attribute:caller_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:workgroup_name' => 'Grupo de trabalho',
|
||||
'Class:ResponseTicket/Attribute:workgroup_name+' => '',
|
||||
'Class:ResponseTicket/Attribute:org_id' => 'Cliente',
|
||||
'Class:ResponseTicket/Attribute:org_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:org_name' => 'Cliente',
|
||||
'Class:ResponseTicket/Attribute:org_name+' => '',
|
||||
'Class:ResponseTicket/Attribute:service_id' => 'Serviço',
|
||||
'Class:ResponseTicket/Attribute:service_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:servicesubcategory_id' => 'Elemento Serviço',
|
||||
'Class:ResponseTicket/Attribute:servicesubcategory_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:product' => 'Produto',
|
||||
'Class:ResponseTicket/Attribute:product+' => '',
|
||||
'Class:ResponseTicket/Attribute:impact' => 'Impacto',
|
||||
'Class:ResponseTicket/Attribute:impact+' => '',
|
||||
'Class:ResponseTicket/Attribute:impact/Value:1' => 'Uma pessoa',
|
||||
'Class:ResponseTicket/Attribute:impact/Value:1+' => '',
|
||||
'Class:ResponseTicket/Attribute:impact/Value:2' => 'Um serviço',
|
||||
'Class:ResponseTicket/Attribute:impact/Value:2+' => '',
|
||||
'Class:ResponseTicket/Attribute:impact/Value:3' => 'Um departamento',
|
||||
'Class:ResponseTicket/Attribute:impact/Value:3+' => '',
|
||||
'Class:ResponseTicket/Attribute:urgency' => 'Urgente',
|
||||
'Class:ResponseTicket/Attribute:urgency+' => '',
|
||||
'Class:ResponseTicket/Attribute:urgency/Value:1' => 'Baixo',
|
||||
'Class:ResponseTicket/Attribute:urgency/Value:1+' => '',
|
||||
'Class:ResponseTicket/Attribute:urgency/Value:2' => 'Médio',
|
||||
'Class:ResponseTicket/Attribute:urgency/Value:2+' => '',
|
||||
'Class:ResponseTicket/Attribute:urgency/Value:3' => 'Alto',
|
||||
'Class:ResponseTicket/Attribute:urgency/Value:3+' => '',
|
||||
'Class:ResponseTicket/Attribute:priority' => 'Prioridade',
|
||||
'Class:ResponseTicket/Attribute:priority+' => '',
|
||||
'Class:ResponseTicket/Attribute:priority/Value:1' => 'Baixo',
|
||||
'Class:ResponseTicket/Attribute:priority/Value:1+' => '',
|
||||
'Class:ResponseTicket/Attribute:priority/Value:2' => 'Médio',
|
||||
'Class:ResponseTicket/Attribute:priority/Value:2+' => '',
|
||||
'Class:ResponseTicket/Attribute:priority/Value:3' => 'Alto',
|
||||
'Class:ResponseTicket/Attribute:priority/Value:3+' => '',
|
||||
'Class:ResponseTicket/Attribute:workgroup_id' => 'Grupo de trabalho',
|
||||
'Class:ResponseTicket/Attribute:workgroup_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:agent_id' => 'Agente',
|
||||
'Class:ResponseTicket/Attribute:agent_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:agent_name' => 'Agente',
|
||||
'Class:ResponseTicket/Attribute:agent_name+' => '',
|
||||
'Class:ResponseTicket/Attribute:agent_email' => 'Email agente',
|
||||
'Class:ResponseTicket/Attribute:agent_email+' => '',
|
||||
'Class:ResponseTicket/Attribute:related_change_id' => 'Mudanças relacionadas',
|
||||
'Class:ResponseTicket/Attribute:related_change_id+' => '',
|
||||
'Class:ResponseTicket/Attribute:related_change_ref' => 'Mudanças relacionadas',
|
||||
'Class:ResponseTicket/Attribute:related_change_ref+' => '',
|
||||
'Class:ResponseTicket/Attribute:close_date' => 'Fechado',
|
||||
'Class:ResponseTicket/Attribute:close_date+' => '',
|
||||
'Class:ResponseTicket/Attribute:last_update' => 'Última atualização',
|
||||
'Class:ResponseTicket/Attribute:last_update+' => '',
|
||||
'Class:ResponseTicket/Attribute:assignment_date' => 'Atribuído',
|
||||
'Class:ResponseTicket/Attribute:assignment_date+' => '',
|
||||
'Class:ResponseTicket/Attribute:escalation_deadline' => 'Prazo de escalonamento',
|
||||
'Class:ResponseTicket/Attribute:escalation_deadline+' => '',
|
||||
'Class:ResponseTicket/Attribute:closure_deadline' => 'Prazo fechamento',
|
||||
'Class:ResponseTicket/Attribute:closure_deadline+' => '',
|
||||
'Class:ResponseTicket/Attribute:resolution_code' => 'Código resolução',
|
||||
'Class:ResponseTicket/Attribute:resolution_code+' => '',
|
||||
'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce' => 'Não pode ser reproduzida',
|
||||
'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce+' => '',
|
||||
'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate' => 'Ticket duplicado',
|
||||
'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate+' => '',
|
||||
'Class:ResponseTicket/Attribute:resolution_code/Value:fixed' => 'Fixo',
|
||||
'Class:ResponseTicket/Attribute:resolution_code/Value:fixed+' => '',
|
||||
'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant' => 'Irrelevante',
|
||||
'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant+' => '',
|
||||
'Class:ResponseTicket/Attribute:solution' => 'Solução',
|
||||
'Class:ResponseTicket/Attribute:solution+' => '',
|
||||
'Class:ResponseTicket/Attribute:user_satisfaction' => 'Satisfação usuário',
|
||||
'Class:ResponseTicket/Attribute:user_satisfaction+' => '',
|
||||
'Class:ResponseTicket/Attribute:user_satisfaction/Value:1' => '1',
|
||||
'Class:ResponseTicket/Attribute:user_satisfaction/Value:1+' => '1',
|
||||
'Class:ResponseTicket/Attribute:user_satisfaction/Value:2' => '2',
|
||||
'Class:ResponseTicket/Attribute:user_satisfaction/Value:2+' => '2',
|
||||
'Class:ResponseTicket/Attribute:user_satisfaction/Value:3' => '3',
|
||||
'Class:ResponseTicket/Attribute:user_satisfaction/Value:3+' => '3',
|
||||
'Class:ResponseTicket/Attribute:user_satisfaction/Value:4' => '4',
|
||||
'Class:ResponseTicket/Attribute:user_satisfaction/Value:4+' => '4',
|
||||
'Class:ResponseTicket/Attribute:user_commment' => 'Comentário usuário',
|
||||
'Class:ResponseTicket/Attribute:user_commment+' => '',
|
||||
'Class:ResponseTicket/Stimulus:ev_assign' => 'Atribuir',
|
||||
'Class:ResponseTicket/Stimulus:ev_assign+' => '',
|
||||
'Class:ResponseTicket/Stimulus:ev_reassign' => 'Re-atribuir',
|
||||
'Class:ResponseTicket/Stimulus:ev_reassign+' => '',
|
||||
'Class:ResponseTicket/Stimulus:ev_timeout' => 'ev_timeout',
|
||||
'Class:ResponseTicket/Stimulus:ev_timeout+' => '',
|
||||
'Class:ResponseTicket/Stimulus:ev_resolve' => 'Marque como resolvido',
|
||||
'Class:ResponseTicket/Stimulus:ev_resolve+' => '',
|
||||
'Class:ResponseTicket/Stimulus:ev_close' => 'Fechado',
|
||||
'Class:ResponseTicket/Stimulus:ev_close+' => '',
|
||||
));
|
||||
|
||||
|
||||
?>
|
||||
42
pages/UI.php
42
pages/UI.php
@@ -500,18 +500,17 @@ try
|
||||
require_once('../application/wizardhelper.class.inc.php');
|
||||
|
||||
require_once('../application/startup.inc.php');
|
||||
$oAppContext = new ApplicationContext();
|
||||
$currentOrganization = utils::ReadParam('org_id', '');
|
||||
$operation = utils::ReadParam('operation', '');
|
||||
|
||||
$oKPI = new ExecutionKPI();
|
||||
|
||||
require_once('../application/loginwebpage.class.inc.php');
|
||||
LoginWebPage::DoLogin(); // Check user rights and prompt if needed
|
||||
$oAppContext = new ApplicationContext();
|
||||
|
||||
$oKPI->ComputeAndReport('User login');
|
||||
|
||||
$oP = new iTopWebPage(Dict::S('UI:WelcomeToITop'), $currentOrganization);
|
||||
$oP = new iTopWebPage(Dict::S('UI:WelcomeToITop'));
|
||||
|
||||
switch($operation)
|
||||
{
|
||||
@@ -609,7 +608,13 @@ try
|
||||
$oSet = new DBObjectSet($oFilter);
|
||||
if ($bSearchForm)
|
||||
{
|
||||
$oBlock = new DisplayBlock($oFilter, 'search', false /* Asynchronous */, array('open' => true));
|
||||
$aParams = array('open' => true);
|
||||
$sBaseClass = utils::ReadParam('baseClass', '');
|
||||
if (!empty($sBaseClass))
|
||||
{
|
||||
$aParams['baseClass'] = $sBaseClass;
|
||||
}
|
||||
$oBlock = new DisplayBlock($oFilter, 'search', false /* Asynchronous */, $aParams);
|
||||
$oBlock->Display($oP, 0);
|
||||
}
|
||||
if (strtolower($sFormat) == 'csv')
|
||||
@@ -775,7 +780,12 @@ try
|
||||
$oP->add_linked_script("../js/linkswidget.js");
|
||||
$oP->add_linked_script("../js/jquery.blockUI.js");
|
||||
|
||||
$aArgs = array_merge($oAppContext->GetAsHash(), utils::ReadParam('default', array()));
|
||||
$aArgs = utils::ReadParam('default', array());
|
||||
$aContext = $oAppContext->GetAsHash();
|
||||
foreach( $oAppContext->GetNames() as $key)
|
||||
{
|
||||
$aArgs[$key] = $oAppContext->GetCurrentValue($key);
|
||||
}
|
||||
|
||||
// If the specified class has subclasses, ask the user an instance of which class to create
|
||||
$aSubClasses = MetaModel::EnumChildClasses($sClass, ENUM_CHILD_CLASSES_ALL); // Including the specified class itself
|
||||
@@ -812,9 +822,9 @@ try
|
||||
$oP->add("<div class=\"wizContainer\">\n");
|
||||
$aDefaults = utils::ReadParam('default', array());
|
||||
$aContext = $oAppContext->GetAsHash();
|
||||
foreach($aContext as $key => $value)
|
||||
foreach( $oAppContext->GetNames() as $key)
|
||||
{
|
||||
$aDefaults[$key] = $value;
|
||||
$aDefaults[$key] = $oAppContext->GetCurrentValue($key);
|
||||
}
|
||||
// Set all the default values in an object and clone this "default" object
|
||||
$oObjToClone = MetaModel::NewObject($sRealClass);
|
||||
@@ -881,7 +891,7 @@ try
|
||||
$oP->set_title(Dict::S('UI:ErrorPageTitle'));
|
||||
$oP->P(Dict::S('UI:ObjectDoesNotExist'));
|
||||
}
|
||||
elseif (!utils::IsTransactionValid($sTransactionId))
|
||||
elseif (!utils::IsTransactionValid($sTransactionId, false))
|
||||
{
|
||||
$oP->set_title(Dict::Format('UI:ModificationPageTitle_Object_Class', $oObj->GetName(), $sClassLabel));
|
||||
$oP->p("<strong>".Dict::S('UI:Error:ObjectAlreadyUpdated')."</strong>\n");
|
||||
@@ -916,6 +926,7 @@ try
|
||||
$oMyChange->Set("userinfo", $sUserString);
|
||||
$iChangeId = $oMyChange->DBInsert();
|
||||
$oObj->DBUpdateTracked($oMyChange);
|
||||
utils::RemoveTransaction($sTransactionId);
|
||||
|
||||
$oP->p(Dict::Format('UI:Class_Object_Updated', MetaModel::GetName(get_class($oObj)), $oObj->GetName()));
|
||||
}
|
||||
@@ -1021,7 +1032,7 @@ try
|
||||
{
|
||||
throw new ApplicationException(Dict::Format('UI:Error:1ParametersMissing', 'class'));
|
||||
}
|
||||
if (!utils::IsTransactionValid($sTransactionId))
|
||||
if (!utils::IsTransactionValid($sTransactionId, false))
|
||||
{
|
||||
$oP->p("<strong>".Dict::S('UI:Error:ObjectAlreadyCreated')."</strong>\n");
|
||||
}
|
||||
@@ -1051,6 +1062,7 @@ try
|
||||
$oMyChange->Set("userinfo", $sUserString);
|
||||
$iChangeId = $oMyChange->DBInsert();
|
||||
$oObj->DBInsertTracked($oMyChange);
|
||||
utils::RemoveTransaction($sTransactionId);
|
||||
$oP->set_title(Dict::S('UI:PageTitle:ObjectCreated'));
|
||||
$oP->add("<h1>".Dict::Format('UI:Title:Object_Of_Class_Created', $oObj->GetName(), $sClassLabel)."</h1>\n");
|
||||
$oObj->DisplayDetails($oP);
|
||||
@@ -1194,6 +1206,12 @@ try
|
||||
oWizardHelper.SetFieldsMap($sJsonFieldsMap);
|
||||
oWizardHelper.SetFieldsCount($iFieldsCount);
|
||||
EOF
|
||||
);
|
||||
$oP->add_ready_script(
|
||||
<<<EOF
|
||||
// Starts the validation when the page is ready
|
||||
CheckFields('apply_stimulus', false);
|
||||
EOF
|
||||
);
|
||||
}
|
||||
else
|
||||
@@ -1412,8 +1430,6 @@ EOF
|
||||
$oP->add("<div id=\"impacted_objects\" style=\"width:100%;background-color:#fff;padding:10px;\"><p style=\"height:150px;\"> </p></div>");
|
||||
$oP->add_ready_script(
|
||||
<<<EOF
|
||||
UpdateImpactedObjects('$sClass', $id, '$sRelation');
|
||||
|
||||
var ajax_request = null;
|
||||
|
||||
function UpdateImpactedObjects(sClass, iId, sRelation)
|
||||
@@ -1431,7 +1447,7 @@ EOF
|
||||
ajax_request = null;
|
||||
}
|
||||
|
||||
ajax_request = $.get('xml.navigator.php', { class: sClass, id: iId, relation: sRelation, format: 'html' },
|
||||
ajax_request = $.get('xml.navigator.php', { 'class': sClass, id: iId, relation: sRelation, format: 'html' },
|
||||
function(data)
|
||||
{
|
||||
$('#impacted_objects').empty();
|
||||
@@ -1443,6 +1459,8 @@ EOF
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
UpdateImpactedObjects('$sClass', $id, '$sRelation');
|
||||
EOF
|
||||
);
|
||||
$oP->SetCurrentTab('');
|
||||
|
||||
@@ -33,10 +33,8 @@ require_once('../application/loginwebpage.class.inc.php');
|
||||
LoginWebPage::DoLogin(true); // Check user rights and prompt if needed (must be admin)
|
||||
|
||||
$oAppContext = new ApplicationContext();
|
||||
$iActiveNodeId = utils::ReadParam('menu', -1);
|
||||
$currentOrganization = utils::ReadParam('org_id', '');
|
||||
|
||||
$oP = new iTopWebPage(Dict::S('UI:UniversalSearchTitle'), $currentOrganization);
|
||||
$oP = new iTopWebPage(Dict::S('UI:UniversalSearchTitle'));
|
||||
|
||||
// From now on the context is limited to the the selected organization ??
|
||||
|
||||
|
||||
@@ -104,6 +104,13 @@ function GetMappingForField($sClassName, $sFieldName, $iFieldIndex, $bAdvancedMo
|
||||
$aChoices = array('' => Dict::S('UI:CSVImport:MappingSelectOne'));
|
||||
$aChoices[':none:'] = Dict::S('UI:CSVImport:MappingNotApplicable');
|
||||
$sFieldCode = ''; // Code of the attribute, if there is a match
|
||||
$aMatches = array();
|
||||
if (preg_match('/^(.+)\*$/', $sFieldName, $aMatches))
|
||||
{
|
||||
// Remove any trailing "star" character.
|
||||
// A star character at the end can be used to indicate a mandatory field
|
||||
$sFieldName = $aMatches[1];
|
||||
}
|
||||
if ($sFieldName == 'id')
|
||||
{
|
||||
$sFieldCode = 'id';
|
||||
@@ -114,6 +121,7 @@ function GetMappingForField($sClassName, $sFieldName, $iFieldIndex, $bAdvancedMo
|
||||
}
|
||||
foreach(MetaModel::ListAttributeDefs($sClassName) as $sAttCode => $oAttDef)
|
||||
{
|
||||
$sStar = '';
|
||||
if ($oAttDef->IsExternalKey())
|
||||
{
|
||||
if ( ($sFieldName == $oAttDef->GetLabel()) || ($sFieldName == $sAttCode))
|
||||
@@ -124,6 +132,11 @@ function GetMappingForField($sClassName, $sFieldName, $iFieldIndex, $bAdvancedMo
|
||||
{
|
||||
$aChoices[$sAttCode] = $oAttDef->GetLabel();
|
||||
}
|
||||
$oExtKeyAttDef = MetaModel::GetAttributeDef($sClassName, $oAttDef->GetKeyAttCode());
|
||||
if (!$oExtKeyAttDef->IsNullAllowed())
|
||||
{
|
||||
$sStar = '*';
|
||||
}
|
||||
// Get fields of the external class that are considered as reconciliation keys
|
||||
$sTargetClass = $oAttDef->GetTargetClass();
|
||||
foreach(MetaModel::ListAttributeDefs($sTargetClass) as $sTargetAttCode => $oTargetAttDef)
|
||||
@@ -140,8 +153,8 @@ function GetMappingForField($sClassName, $sFieldName, $iFieldIndex, $bAdvancedMo
|
||||
{
|
||||
|
||||
// When not in advanced mode do not allow to use reconciliation keys (on external keys) if they are themselves external keys !
|
||||
$aChoices[$sAttCode.'->'.$sTargetAttCode] = $oAttDef->GetLabel().'->'.$oTargetAttDef->GetLabel().$sSuffix;
|
||||
if ((strcasecmp($sFieldName, $aChoices[$sAttCode.'->'.$sTargetAttCode]) == 0) || (strcasecmp($sFieldName, ($sAttCode.'->'.$sTargetAttCode.$sSuffix)) == 0) )
|
||||
$aChoices[$sAttCode.'->'.$sTargetAttCode] = $oAttDef->GetLabel().'->'.$oTargetAttDef->GetLabel().$sSuffix.$sStar;
|
||||
if ((strcasecmp($sFieldName, $oAttDef->GetLabel().'->'.$oTargetAttDef->GetLabel().$sSuffix) == 0) || (strcasecmp($sFieldName, ($sAttCode.'->'.$sTargetAttCode.$sSuffix)) == 0) )
|
||||
{
|
||||
$sFieldCode = $sAttCode.'->'.$sTargetAttCode;
|
||||
}
|
||||
@@ -151,7 +164,11 @@ function GetMappingForField($sClassName, $sFieldName, $iFieldIndex, $bAdvancedMo
|
||||
}
|
||||
else if ( ($oAttDef->IsWritable()) && (!$oAttDef->IsLinkSet()) )
|
||||
{
|
||||
$aChoices[$sAttCode] = $oAttDef->GetLabel();
|
||||
if (!$oAttDef->IsNullAllowed())
|
||||
{
|
||||
$sStar = '*';
|
||||
}
|
||||
$aChoices[$sAttCode] = $oAttDef->GetLabel().$sStar;
|
||||
if ( ($sFieldName == $oAttDef->GetLabel()) || ($sFieldName == $sAttCode))
|
||||
{
|
||||
$sFieldCode = $sAttCode;
|
||||
@@ -356,7 +373,7 @@ EOF
|
||||
$oSearch = new DBObjectSearch($sClassName);
|
||||
$oSearch->AddCondition('id', 0, '='); // Make sure we create an empty set
|
||||
$oSet = new CMDBObjectSet($oSearch);
|
||||
$sResult = cmdbAbstractObject::GetSetAsCSV($oSet);
|
||||
$sResult = cmdbAbstractObject::GetSetAsCSV($oSet, array('showMandatoryFields' => true));
|
||||
//$aCSV = explode("\n", $sCSV);
|
||||
// If there are more than one line, let's assume that the first line is a comment and skip it.
|
||||
//if (count($aCSV) > 1)
|
||||
@@ -373,6 +390,7 @@ EOF
|
||||
if ($sDisposition == 'attachment')
|
||||
{
|
||||
$oPage = new CSVPage("");
|
||||
$oPage->add_header("Content-type: text/csv; charset=utf-8");
|
||||
$oPage->add_header("Content-disposition: attachment; filename=\"{$sClassDisplayName}.csv\"");
|
||||
$oPage->no_cache();
|
||||
$oPage->add($sResult);
|
||||
|
||||
@@ -62,8 +62,9 @@ switch($operation)
|
||||
$sAttCode = utils::ReadParam('sAttCode', '');
|
||||
$iInputId = utils::ReadParam('iInputId', '');
|
||||
$sSuffix = utils::ReadParam('sSuffix', '');
|
||||
$bDuplicates = (utils::ReadParam('bDuplicates', 'false') == 'false') ? false : true;
|
||||
$aAlreadyLinked = utils::ReadParam('aAlreadyLinked', array());
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iInputId, $sSuffix);
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iInputId, $sSuffix, $bDuplicates);
|
||||
$oWidget->SearchObjectsToAdd($oPage, $sRemoteClass, $aAlreadyLinked);
|
||||
break;
|
||||
|
||||
@@ -72,8 +73,9 @@ switch($operation)
|
||||
$sAttCode = utils::ReadParam('sAttCode', '');
|
||||
$iInputId = utils::ReadParam('iInputId', '');
|
||||
$sSuffix = utils::ReadParam('sSuffix', '');
|
||||
$bDuplicates = (utils::ReadParam('bDuplicates', 'false') == 'false') ? false : true;
|
||||
$aLinkedObjectIds = utils::ReadParam('selectObject', array());
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iInputId, $sSuffix);
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iInputId, $sSuffix, $bDuplicates);
|
||||
$oWidget->DoAddObjects($oPage, $aLinkedObjectIds);
|
||||
break;
|
||||
|
||||
|
||||
@@ -28,14 +28,13 @@ try
|
||||
require_once('../application/itopwebpage.class.inc.php');
|
||||
|
||||
require_once('../application/startup.inc.php');
|
||||
$currentOrganization = utils::ReadParam('org_id', '');
|
||||
$operation = utils::ReadParam('operation', '');
|
||||
$oAppContext = new ApplicationContext();
|
||||
|
||||
require_once('../application/loginwebpage.class.inc.php');
|
||||
LoginWebPage::DoLogin(); // Check user rights and prompt if needed
|
||||
|
||||
$oP = new iTopWebPage(Dict::S('UI:Audit:Title'), $currentOrganization);
|
||||
$oP = new iTopWebPage(Dict::S('UI:Audit:Title'));
|
||||
|
||||
function GetRuleResultSet($iRuleId, $oDefinitionFilter)
|
||||
{
|
||||
|
||||
@@ -35,10 +35,9 @@ try
|
||||
LoginWebPage::DoLogin(); // Check user rights and prompt if needed
|
||||
|
||||
$oAppContext = new ApplicationContext();
|
||||
$currentOrganization = utils::ReadParam('org_id', 1);
|
||||
$iStep = utils::ReadParam('step', 1);
|
||||
|
||||
$oPage = new iTopWebPage(Dict::S('UI:Title:BulkImport'), $currentOrganization);
|
||||
$oPage = new iTopWebPage(Dict::S('UI:Title:BulkImport'));
|
||||
|
||||
/**
|
||||
* Helper function to build a select from the list of valid classes for a given action
|
||||
@@ -338,16 +337,16 @@ try
|
||||
|
||||
$oPage->add('<input type="hidden" name="csvdata_truncated" id="csvdata_truncated" value="'.htmlentities($sCSVDataTruncated, ENT_QUOTES, 'UTF-8').'"/>');
|
||||
$aRes = $oBulk->Process($oMyChange);
|
||||
|
||||
$sHtml = '<table id="bulk_preview">';
|
||||
$sHtml .= '<tr><th>Line</th>';
|
||||
$sHtml .= '<th>Status</th>';
|
||||
$sHtml .= '<th>Object</th>';
|
||||
|
||||
$sHtml = '<table id="bulk_preview" style="border-collapse: collapse;">';
|
||||
$sHtml .= '<tr><th style="padding:2px;border-right: 2px #fff solid;">Line</th>';
|
||||
$sHtml .= '<th style="padding:2px;border-right: 2px #fff solid;">Status</th>';
|
||||
$sHtml .= '<th style="padding:2px;border-right: 2px #fff solid;">Object</th>';
|
||||
foreach($aFieldsMapping as $iNumber => $sAttCode)
|
||||
{
|
||||
if (!empty($sAttCode) && ($sAttCode != ':none:') && ($sAttCode != 'finalclass'))
|
||||
{
|
||||
$sHtml .= "<th>".GetFriendlyAttCodeName($sClassName, $sAttCode)."</th>";
|
||||
$sHtml .= "<th style=\"padding:2px;border-right: 2px #fff solid;\">".GetFriendlyAttCodeName($sClassName, $sAttCode)."</th>";
|
||||
}
|
||||
}
|
||||
$sHtml .= '<th>Message</th>';
|
||||
@@ -414,9 +413,9 @@ try
|
||||
break;
|
||||
}
|
||||
$sHtml .= '<tr class="'.$sCSSRowClass.'">';
|
||||
$sHtml .= "<td>".sprintf("%0{$sMaxLen}d", 1+$iLine+$iRealSkippedLines)."</td>";
|
||||
$sHtml .= "<td>$sStatus</td>";
|
||||
$sHtml .= "<td>$sUrl</td>";
|
||||
$sHtml .= "<td style=\"background-color:#f1f1f1;border-right:2px #fff solid;\">".sprintf("%0{$sMaxLen}d", 1+$iLine+$iRealSkippedLines)."</td>";
|
||||
$sHtml .= "<td style=\"text-align:center;background-color:#f1f1f1;border-right:2px #fff solid;\">$sStatus</td>";
|
||||
$sHtml .= "<td style=\"text-align:center;background-color:#f1f1f1;\">$sUrl</td>";
|
||||
foreach($aFieldsMapping as $iNumber => $sAttCode)
|
||||
{
|
||||
if (!empty($sAttCode) && ($sAttCode != ':none:') && ($sAttCode != 'finalclass'))
|
||||
@@ -430,6 +429,8 @@ try
|
||||
switch(get_class($oExtKeyCellStatus))
|
||||
{
|
||||
case 'CellStatus_Issue':
|
||||
case 'CellStatus_SearchIssue':
|
||||
case 'CellStatus_NullIssue':
|
||||
$sCellMessage .= $oPage->GetP($oExtKeyCellStatus->GetDescription());
|
||||
break;
|
||||
|
||||
@@ -445,24 +446,29 @@ try
|
||||
{
|
||||
case 'CellStatus_Issue':
|
||||
$sCellMessage .= $oPage->GetP($oCellStatus->GetDescription());
|
||||
$sHtml .= '<td class="cell_error" style="border-right:1px #eee solid;">ERROR: '.htmlentities($aData[$iLine][$iNumber-1], ENT_QUOTES, 'UTF-8').$sCellMessage.'</td>';
|
||||
break;
|
||||
|
||||
case 'CellStatus_SearchIssue':
|
||||
$sCellMessage .= $oPage->GetP($oCellStatus->GetDescription());
|
||||
$sHtml .= '<td class="cell_error">ERROR: '.htmlentities($aData[$iLine][$iNumber-1], ENT_QUOTES, 'UTF-8').$sCellMessage.'</td>';
|
||||
break;
|
||||
|
||||
case 'CellStatus_Ambiguous':
|
||||
$sCellMessage .= $oPage->GetP($oCellStatus->GetDescription());
|
||||
$sHtml .= '<td class="cell_error">AMBIGUOUS: '.htmlentities($aData[$iLine][$iNumber-1], ENT_QUOTES, 'UTF-8').$sCellMessage.'</td>';
|
||||
$sHtml .= '<td class="cell_error" style="border-right:1px #eee solid;">AMBIGUOUS: '.htmlentities($aData[$iLine][$iNumber-1], ENT_QUOTES, 'UTF-8').$sCellMessage.'</td>';
|
||||
break;
|
||||
|
||||
case 'CellStatus_Modify':
|
||||
$sHtml .= '<td class="cell_modified"><b>'.htmlentities($aData[$iLine][$iNumber-1], ENT_QUOTES, 'UTF-8').'</b></td>';
|
||||
$sHtml .= '<td class="cell_modified" style="border-right:1px #eee solid;"><b>'.htmlentities($aData[$iLine][$iNumber-1], ENT_QUOTES, 'UTF-8').'</b></td>';
|
||||
break;
|
||||
|
||||
default:
|
||||
$sHtml .= '<td class="cell_ok">'.htmlentities($aData[$iLine][$iNumber-1], ENT_QUOTES, 'UTF-8').$sCellMessage.'</td>';
|
||||
$sHtml .= '<td class="cell_ok" style="border-right:1px #eee solid;">'.htmlentities($aData[$iLine][$iNumber-1], ENT_QUOTES, 'UTF-8').$sCellMessage.'</td>';
|
||||
}
|
||||
}
|
||||
}
|
||||
$sHtml .= "<td class=\"$sCSSMessageClass\">$sMessage</td>";
|
||||
$sHtml .= "<td class=\"$sCSSMessageClass\" style=\"background-color:#f1f1f1;\">$sMessage</td>";
|
||||
$iLine++;
|
||||
$sHtml .= '</tr>';
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ $currentOrganization = utils::ReadParam('org_id', '');
|
||||
$operation = utils::ReadParam('operation', '');
|
||||
|
||||
require_once('../application/loginwebpage.class.inc.php');
|
||||
session_name(utils::GetConfig()->Get('session_name'));
|
||||
session_start();
|
||||
LoginWebPage::ResetSession();
|
||||
$oPage = new LoginWebPage();
|
||||
|
||||
@@ -27,10 +27,8 @@ LoginWebPage::DoLogin(); // Check user rights and prompt if needed
|
||||
|
||||
$sOperation = utils::ReadParam('operation', 'menu');
|
||||
$oAppContext = new ApplicationContext();
|
||||
$iActiveNodeId = utils::ReadParam('menu', -1);
|
||||
$currentOrganization = utils::ReadParam('org_id', '');
|
||||
|
||||
$oP = new iTopWebPage("iTop - Navigator", $currentOrganization);
|
||||
$oP = new iTopWebPage("iTop - Navigator");
|
||||
|
||||
// Main program
|
||||
$sClass = utils::ReadParam('class', '');
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
$sFullUrl = 'http'.(empty($_SERVER['HTTPS']) ? '' : 's').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/UI.php';
|
||||
$sICOFullUrl = 'http'.(empty($_SERVER['HTTPS']) ? '' : 's').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/../images/iTop-icon.ico';
|
||||
$sPNGFullUrl = 'http'.(empty($_SERVER['HTTPS']) ? '' : 's').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/../images/iTop-icon.png';
|
||||
$sFullUrl = 'http'.((isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off')) ? 's' : '').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/UI.php';
|
||||
$sICOFullUrl = 'http'.((isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off')) ? 's' : '').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/../images/iTop-icon.ico';
|
||||
$sPNGFullUrl = 'http'.((isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off')) ? 's' : '').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/../images/iTop-icon.png';
|
||||
header('Content-type: text/xml');
|
||||
?>
|
||||
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
|
||||
|
||||
231
pages/php-ofc-library/dot_base.php
Normal file
231
pages/php-ofc-library/dot_base.php
Normal file
@@ -0,0 +1,231 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* A private class. All the other line-dots inherit from this.
|
||||
* Gives them all some common methods.
|
||||
*/
|
||||
class dot_base
|
||||
{
|
||||
/**
|
||||
* @param $type string
|
||||
* @param $value integer
|
||||
*/
|
||||
function dot_base($type, $value=null)
|
||||
{
|
||||
$this->type = $type;
|
||||
if( isset( $value ) )
|
||||
$this->value( $value );
|
||||
}
|
||||
|
||||
/**
|
||||
* For line charts that only require a Y position
|
||||
* for each point.
|
||||
* @param $value as integer, the Y position
|
||||
*/
|
||||
function value( $value )
|
||||
{
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* For scatter charts that require an X and Y position for
|
||||
* each point.
|
||||
*
|
||||
* @param $x as integer
|
||||
* @param $y as integer
|
||||
*/
|
||||
function position( $x, $y )
|
||||
{
|
||||
$this->x = $x;
|
||||
$this->y = $y;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $colour is a string, HEX colour, e.g. '#FF0000' red
|
||||
*/
|
||||
function colour($colour)
|
||||
{
|
||||
$this->colour = $colour;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The tooltip for this dot.
|
||||
*/
|
||||
function tooltip( $tip )
|
||||
{
|
||||
$this->tip = $tip;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $size is an integer. Size of the dot.
|
||||
*/
|
||||
function size($size)
|
||||
{
|
||||
$tmp = 'dot-size';
|
||||
$this->$tmp = $size;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* a private method
|
||||
*/
|
||||
function type( $type )
|
||||
{
|
||||
$this->type = $type;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $size is an integer. The size of the hollow 'halo' around the dot that masks the line.
|
||||
*/
|
||||
function halo_size( $size )
|
||||
{
|
||||
$tmp = 'halo-size';
|
||||
$this->$tmp = $size;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $do as string. One of three options (examples):
|
||||
* - "http://example.com" - browse to this URL
|
||||
* - "https://example.com" - browse to this URL
|
||||
* - "trace:message" - print this message in the FlashDevelop debug pane
|
||||
* - all other strings will be called as Javascript functions, so a string "hello_world"
|
||||
* will call the JS function "hello_world(index)". It passes in the index of the
|
||||
* point.
|
||||
*/
|
||||
function on_click( $do )
|
||||
{
|
||||
$tmp = 'on-click';
|
||||
$this->$tmp = $do;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw a hollow dot
|
||||
*/
|
||||
class hollow_dot extends dot_base
|
||||
{
|
||||
function hollow_dot($value=null)
|
||||
{
|
||||
parent::dot_base( 'hollow-dot', $value );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw a star
|
||||
*/
|
||||
class star extends dot_base
|
||||
{
|
||||
/**
|
||||
* The constructor, takes an optional $value
|
||||
*/
|
||||
function star($value=null)
|
||||
{
|
||||
parent::dot_base( 'star', $value );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $angle is an integer.
|
||||
*/
|
||||
function rotation($angle)
|
||||
{
|
||||
$this->rotation = $angle;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $is_hollow is a boolean.
|
||||
*/
|
||||
function hollow($is_hollow)
|
||||
{
|
||||
$this->hollow = $is_hollow;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw a 'bow tie' shape.
|
||||
*/
|
||||
class bow extends dot_base
|
||||
{
|
||||
/**
|
||||
* The constructor, takes an optional $value
|
||||
*/
|
||||
function bow($value=null)
|
||||
{
|
||||
parent::dot_base( 'bow', $value );
|
||||
}
|
||||
|
||||
/**
|
||||
* Rotate the anchor object.
|
||||
* @param $angle is an integer.
|
||||
*/
|
||||
function rotation($angle)
|
||||
{
|
||||
$this->rotation = $angle;
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An <i><b>n</b></i> sided shape.
|
||||
*/
|
||||
class anchor extends dot_base
|
||||
{
|
||||
/**
|
||||
* The constructor, takes an optional $value
|
||||
*/
|
||||
function anchor($value=null)
|
||||
{
|
||||
parent::dot_base( 'anchor', $value );
|
||||
}
|
||||
|
||||
/**
|
||||
* Rotate the anchor object.
|
||||
* @param $angle is an integer.
|
||||
*/
|
||||
function rotation($angle)
|
||||
{
|
||||
$this->rotation = $angle;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $sides is an integer. Number of sides this shape has.
|
||||
*/
|
||||
function sides($sides)
|
||||
{
|
||||
$this->sides = $sides;
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A simple dot
|
||||
*/
|
||||
class dot extends dot_base
|
||||
{
|
||||
/**
|
||||
* The constructor, takes an optional $value
|
||||
*/
|
||||
function dot($value=null)
|
||||
{
|
||||
parent::dot_base( 'dot', $value );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A simple dot
|
||||
*/
|
||||
class solid_dot extends dot_base
|
||||
{
|
||||
/**
|
||||
* The constructor, takes an optional $value
|
||||
*/
|
||||
function solid_dot($value=null)
|
||||
{
|
||||
parent::dot_base( 'solid-dot', $value );
|
||||
}
|
||||
}
|
||||
27
pages/php-ofc-library/ofc_arrow.php
Normal file
27
pages/php-ofc-library/ofc_arrow.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
class ofc_arrow
|
||||
{
|
||||
/**
|
||||
*@param $x as number. Start x position
|
||||
*@param $y as number. Start y position
|
||||
*@param $a as number. End x position
|
||||
*@param $b as number. End y position
|
||||
*@param $colour as string.
|
||||
*@param $barb_length as number. Length of the barbs in pixels.
|
||||
*/
|
||||
function ofc_arrow($x, $y, $a, $b, $colour, $barb_length=10)
|
||||
{
|
||||
$this->type = "arrow";
|
||||
$this->start = array("x"=>$x, "y"=>$y);
|
||||
$this->end = array("x"=>$a, "y"=>$b);
|
||||
$this->colour($colour);
|
||||
$this->{"barb-length"} = $barb_length;
|
||||
}
|
||||
|
||||
function colour( $colour )
|
||||
{
|
||||
$this->colour = $colour;
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
41
pages/php-ofc-library/ofc_candle.php
Normal file
41
pages/php-ofc-library/ofc_candle.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
include_once 'ofc_bar_base.php';
|
||||
|
||||
class candle_value
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function candle_value( $high, $open, $close, $low )
|
||||
{
|
||||
$this->high = $high;
|
||||
$this->top = $open;
|
||||
$this->bottom = $close;
|
||||
$this->low = $low;
|
||||
}
|
||||
|
||||
function set_colour( $colour )
|
||||
{
|
||||
$this->colour = $colour;
|
||||
}
|
||||
|
||||
function set_tooltip( $tip )
|
||||
{
|
||||
$this->tip = $tip;
|
||||
}
|
||||
}
|
||||
|
||||
class candle extends bar_base
|
||||
{
|
||||
function candle($colour, $negative_colour=null)
|
||||
{
|
||||
$this->type = "candle";
|
||||
parent::bar_base();
|
||||
|
||||
$this->set_colour( $colour );
|
||||
if(!is_null($negative_colour))
|
||||
$this->{'negative-colour'} = $negative_colour;
|
||||
}
|
||||
}
|
||||
|
||||
56
pages/php-ofc-library/ofc_menu.php
Normal file
56
pages/php-ofc-library/ofc_menu.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
class ofc_menu_item
|
||||
{
|
||||
/**
|
||||
* @param $text as string. The menu item text.
|
||||
* @param $javascript_function_name as string. The javascript function name, the
|
||||
* js function takes one parameter, the chart ID. See ofc_menu_item_camera for
|
||||
* some example code.
|
||||
*/
|
||||
function ofc_menu_item($text, $javascript_function_name)
|
||||
{
|
||||
$this->type = "text";
|
||||
$this->text = $text;
|
||||
$tmp = 'javascript-function';
|
||||
$this->$tmp = $javascript_function_name;
|
||||
}
|
||||
}
|
||||
|
||||
class ofc_menu_item_camera
|
||||
{
|
||||
/**
|
||||
* @param $text as string. The menu item text.
|
||||
* @param $javascript_function_name as string. The javascript function name, the
|
||||
* js function takes one parameter, the chart ID. So for example, our js function
|
||||
* could look like this:
|
||||
*
|
||||
* function save_image( chart_id )
|
||||
* {
|
||||
* alert( chart_id );
|
||||
* }
|
||||
*
|
||||
* to make a menu item call this: ofc_menu_item_camera('Save chart', 'save_image');
|
||||
*/
|
||||
function ofc_menu_item_camera($text, $javascript_function_name)
|
||||
{
|
||||
$this->type = "camera-icon";
|
||||
$this->text = $text;
|
||||
$tmp = 'javascript-function';
|
||||
$this->$tmp = $javascript_function_name;
|
||||
}
|
||||
}
|
||||
|
||||
class ofc_menu
|
||||
{
|
||||
function ofc_menu($colour, $outline_colour)
|
||||
{
|
||||
$this->colour = $colour;
|
||||
$this->outline_colour = $outline_colour;
|
||||
}
|
||||
|
||||
function values($values)
|
||||
{
|
||||
$this->values = $values;
|
||||
}
|
||||
}
|
||||
43
pages/php-ofc-library/ofc_sugar.php
Normal file
43
pages/php-ofc-library/ofc_sugar.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Sugar: to make stars easier sometimes
|
||||
*/
|
||||
class s_star extends star
|
||||
{
|
||||
/**
|
||||
* I use this wrapper for default dot types,
|
||||
* it just makes the code easier to read.
|
||||
*/
|
||||
function s_star($colour, $size)
|
||||
{
|
||||
parent::star();
|
||||
$this->colour($colour)->size($size);
|
||||
}
|
||||
}
|
||||
|
||||
class s_box extends anchor
|
||||
{
|
||||
/**
|
||||
* I use this wrapper for default dot types,
|
||||
* it just makes the code easier to read.
|
||||
*/
|
||||
function s_box($colour, $size)
|
||||
{
|
||||
parent::anchor();
|
||||
$this->colour($colour)->size($size)->rotation(45)->sides(4);
|
||||
}
|
||||
}
|
||||
|
||||
class s_hollow_dot extends hollow_dot
|
||||
{
|
||||
/**
|
||||
* I use this wrapper for default dot types,
|
||||
* it just makes the code easier to read.
|
||||
*/
|
||||
function s_hollow_dot($colour, $size)
|
||||
{
|
||||
parent::hollow_dot();
|
||||
$this->colour($colour)->size($size);
|
||||
}
|
||||
}
|
||||
133
pages/php-ofc-library/ofc_tags.php
Normal file
133
pages/php-ofc-library/ofc_tags.php
Normal file
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
|
||||
class ofc_tags
|
||||
{
|
||||
function ofc_tags()
|
||||
{
|
||||
$this->type = "tags";
|
||||
$this->values = array();
|
||||
}
|
||||
|
||||
function colour( $colour )
|
||||
{
|
||||
$this->colour = $colour;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
*@param $font as string. e.g. "Verdana"
|
||||
*@param $size as integer. Size in px
|
||||
*/
|
||||
function font($font, $size)
|
||||
{
|
||||
$this->font = $font;
|
||||
$this->{'font-size'} = $size;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
*@param $x as integer. Size of x padding in px
|
||||
*@param $y as integer. Size of y padding in px
|
||||
*/
|
||||
function padding($x, $y)
|
||||
{
|
||||
$this->{"pad-x"} = $x;
|
||||
$this->{"pad-y"} = $y;
|
||||
return $this;
|
||||
}
|
||||
|
||||
function rotate($angle)
|
||||
{
|
||||
$this->rotate($angle);
|
||||
return $this;
|
||||
}
|
||||
|
||||
function align_x_center()
|
||||
{
|
||||
$this->{"align-x"} = "center";
|
||||
return $this;
|
||||
}
|
||||
|
||||
function align_x_left()
|
||||
{
|
||||
$this->{"align-x"} = "left";
|
||||
return $this;
|
||||
}
|
||||
|
||||
function align_x_right()
|
||||
{
|
||||
$this->{"align-x"} = "right";
|
||||
return $this;
|
||||
}
|
||||
|
||||
function align_y_above()
|
||||
{
|
||||
$this->{"align-y"} = "above";
|
||||
return $this;
|
||||
}
|
||||
|
||||
function align_y_below()
|
||||
{
|
||||
$this->{"align-y"} = "below";
|
||||
return $this;
|
||||
}
|
||||
|
||||
function align_y_center()
|
||||
{
|
||||
$this->{"align-y"} = "center";
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* This can contain some HTML, e.g:
|
||||
* - "More <a href="javascript:alert(12);">info</a>"
|
||||
* - "<a href="http://teethgrinder.co.uk">ofc</a>"
|
||||
*/
|
||||
function text($text)
|
||||
{
|
||||
$this->text = $text;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* This works, but to get the mouse pointer to change
|
||||
* to a little hand you need to use "<a href="">stuff</a>"-- see text()
|
||||
*/
|
||||
function on_click($on_click)
|
||||
{
|
||||
$this->{'on-click'} = $on_click;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
*@param $bold boolean.
|
||||
*@param $underline boolean.
|
||||
*@param $border boolean.
|
||||
*@prarm $alpha real (0 to 1.0)
|
||||
*/
|
||||
function style($bold, $underline, $border, $alpha )
|
||||
{
|
||||
$this->bold = $bold;
|
||||
$this->border = $underline;
|
||||
$this->underline = $border;
|
||||
$this->alpha = $alpha;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
*@param $tag as ofc_tag
|
||||
*/
|
||||
function append_tag($tag)
|
||||
{
|
||||
$this->values[] = $tag;
|
||||
}
|
||||
}
|
||||
|
||||
class ofc_tag extends ofc_tags
|
||||
{
|
||||
function ofc_tag($x, $y)
|
||||
{
|
||||
$this->x = $x;
|
||||
$this->y = $y;
|
||||
}
|
||||
}
|
||||
38
pages/php-ofc-library/ofc_y_axis_label.php
Normal file
38
pages/php-ofc-library/ofc_y_axis_label.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* y_axis_label see y_axis_labels
|
||||
*/
|
||||
class y_axis_label
|
||||
{
|
||||
function y_axis_label( $y, $text)
|
||||
{
|
||||
$this->y = $y;
|
||||
$this->set_text( $text );
|
||||
}
|
||||
|
||||
function set_text( $text )
|
||||
{
|
||||
$this->text = $text;
|
||||
}
|
||||
|
||||
function set_colour( $colour )
|
||||
{
|
||||
$this->colour = $colour;
|
||||
}
|
||||
|
||||
function set_size( $size )
|
||||
{
|
||||
$this->size = $size;
|
||||
}
|
||||
|
||||
function set_rotate( $rotate )
|
||||
{
|
||||
$this->rotate = $rotate;
|
||||
}
|
||||
|
||||
function set_vertical()
|
||||
{
|
||||
$this->rotate = "vertical";
|
||||
}
|
||||
}
|
||||
57
pages/php-ofc-library/ofc_y_axis_labels.php
Normal file
57
pages/php-ofc-library/ofc_y_axis_labels.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
class y_axis_labels
|
||||
{
|
||||
function y_axis_labels(){}
|
||||
|
||||
/**
|
||||
* @param $steps which labels are generated
|
||||
*/
|
||||
function set_steps( $steps )
|
||||
{
|
||||
$this->steps = $steps;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param $labels as an array of [y_axis_label or string]
|
||||
*/
|
||||
function set_labels( $labels )
|
||||
{
|
||||
$this->labels = $labels;
|
||||
}
|
||||
|
||||
function set_colour( $colour )
|
||||
{
|
||||
$this->colour = $colour;
|
||||
}
|
||||
|
||||
/**
|
||||
* font size in pixels
|
||||
*/
|
||||
function set_size( $size )
|
||||
{
|
||||
$this->size = $size;
|
||||
}
|
||||
|
||||
/**
|
||||
* rotate labels
|
||||
*/
|
||||
function set_vertical()
|
||||
{
|
||||
$this->rotate = 270;
|
||||
}
|
||||
|
||||
function rotate( $angle )
|
||||
{
|
||||
$this->rotate = $angle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $text default text that all labels inherit
|
||||
*/
|
||||
function set_text( $text )
|
||||
{
|
||||
$this->text = $text;
|
||||
}
|
||||
}
|
||||
@@ -91,10 +91,8 @@ function ShowExamples($oP, $sExpression)
|
||||
|
||||
$sOperation = utils::ReadParam('operation', 'menu');
|
||||
$oAppContext = new ApplicationContext();
|
||||
$iActiveNodeId = utils::ReadParam('menu', -1);
|
||||
$currentOrganization = utils::ReadParam('org_id', '');
|
||||
|
||||
$oP = new iTopWebPage(Dict::S('UI:RunQuery:Title'), $currentOrganization);
|
||||
$oP = new iTopWebPage(Dict::S('UI:RunQuery:Title'));
|
||||
|
||||
// Main program
|
||||
$sExpression = utils::ReadParam('expression', '');
|
||||
|
||||
@@ -507,11 +507,9 @@ function DisplayRelationDetails($oPage, $sRelCode)
|
||||
|
||||
// Display the menu on the left
|
||||
$oAppContext = new ApplicationContext();
|
||||
$iActiveNodeId = utils::ReadParam('menu', -1);
|
||||
$currentOrganization = utils::ReadParam('org_id', 1);
|
||||
$operation = utils::ReadParam('operation', '');
|
||||
|
||||
$oPage = new iTopWebPage(Dict::S('UI:Schema:Title'), $currentOrganization);
|
||||
$oPage = new iTopWebPage(Dict::S('UI:Schema:Title'));
|
||||
$oPage->no_cache();
|
||||
|
||||
$operation = utils::ReadParam('operation', '');
|
||||
|
||||
@@ -121,9 +121,8 @@ function SelectService($oP, $oUserOrg)
|
||||
{
|
||||
$sChecked = "checked";
|
||||
}
|
||||
$oP->p("<tr><td style=\"vertical-align:top\"><p><input name=\"attr_service_id\" $sChecked type=\"radio\" id=\"svc_$id\" value=\"$id\"></p></td><td style=\"vertical-align:top\"><p><b><label for=\"svc_$id\">".htmlentities($oService->GetName())."</label></b></p>");
|
||||
$oP->p("<p>".htmlentities($oService->Get('description'))."</p></td></tr>"); DumpHiddenParams($oP, array('service_id'), $aParameters);
|
||||
|
||||
$oP->p("<tr><td style=\"vertical-align:top\"><p><input name=\"attr_service_id\" $sChecked type=\"radio\" id=\"svc_$id\" value=\"$id\"></p></td><td style=\"vertical-align:top\"><p><b><label for=\"svc_$id\">".htmlentities($oService->GetName(), ENT_QUOTES, 'UTF-8')."</label></b></p>");
|
||||
$oP->p("<p>".htmlentities($oService->Get('description'), ENT_QUOTES, 'UTF-8')."</p></td></tr>");
|
||||
}
|
||||
$oP->add("</table>\n");
|
||||
DumpHiddenParams($oP, array('service_id'), $aParameters);
|
||||
@@ -163,7 +162,7 @@ function SelectSubService($oP, $oUserOrg)
|
||||
if (is_object($oService))
|
||||
{
|
||||
$oP->add("<div class=\"wizContainer\" id=\"form_select_servicesubcategory\">\n");
|
||||
$oP->add("<h1 id=\"select_subcategory\">".Dict::Format('Portal:SelectSubcategoryFrom_Service', htmlentities($oService->GetName()))."</h1>\n");
|
||||
$oP->add("<h1 id=\"select_subcategory\">".Dict::Format('Portal:SelectSubcategoryFrom_Service', htmlentities($oService->GetName(), ENT_QUOTES, 'UTF-8'))."</h1>\n");
|
||||
$oP->add("<form id=\"request_form\" method=\"get\">\n");
|
||||
$oP->add("<table>\n");
|
||||
while($oSubService = $oSet->Fetch())
|
||||
@@ -174,8 +173,8 @@ function SelectSubService($oP, $oUserOrg)
|
||||
{
|
||||
$sChecked = "checked";
|
||||
}
|
||||
$oP->p("<tr><td style=\"vertical-align:top\"><p><input name=\"attr_servicesubcategory_id\" $sChecked type=\"radio\" id=\"subsvc_$id\" value=\"$id\"></p></td><td style=\"vertical-align:top\"><p><b><label for=\"subsvc_$id\">".htmlentities($oSubService->GetName())."</label></b></p>");
|
||||
$oP->p("<p>".htmlentities($oSubService->Get('description'))."</p></td></tr>");
|
||||
$oP->p("<tr><td style=\"vertical-align:top\"><p><input name=\"attr_servicesubcategory_id\" $sChecked type=\"radio\" id=\"subsvc_$id\" value=\"$id\"></p></td><td style=\"vertical-align:top\"><p><b><label for=\"subsvc_$id\">".htmlentities($oSubService->GetName(), ENT_QUOTES, 'UTF-8')."</label></b></p>");
|
||||
$oP->p("<p>".htmlentities($oSubService->Get('description'), ENT_QUOTES, 'UTF-8')."</p></td></tr>");
|
||||
}
|
||||
$sMessage = Dict::S('Portal:PleaseSelectAServiceSubCategory');
|
||||
$oP->add_ready_script(
|
||||
@@ -220,9 +219,9 @@ function RequestCreationForm($oP, $oUserOrg)
|
||||
$oRequest->Set('servicesubcategory_id', $aParameters['servicesubcategory_id']);
|
||||
|
||||
$oAttDef = MetaModel::GetAttributeDef('UserRequest', 'service_id');
|
||||
$aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => htmlentities($oService->GetName()));
|
||||
$aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => htmlentities($oService->GetName(), ENT_QUOTES, 'UTF-8'));
|
||||
$oAttDef = MetaModel::GetAttributeDef('UserRequest', 'servicesubcategory_id');
|
||||
$aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => htmlentities($oSubService->GetName()));
|
||||
$aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => htmlentities($oSubService->GetName(), ENT_QUOTES, 'UTF-8'));
|
||||
$iFlags = 0;
|
||||
foreach($aList as $sAttCode)
|
||||
{
|
||||
@@ -372,7 +371,7 @@ function CreateRequest(WebPage $oP, Organization $oUserOrg)
|
||||
|
||||
case 2:
|
||||
$oP->AddMenuButton('cancel', 'UI:Button:Cancel', './index.php?operation=welcome');
|
||||
RequestCreationForm($oP, $oUserOrg);
|
||||
RequestCreationForm($oP, $oUserOrg);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
|
||||
171
readme.txt
171
readme.txt
@@ -1,4 +1,4 @@
|
||||
iTop - version 1.0.0 - 20-Sep-2010
|
||||
iTop - version 1.0.1 - 03-Nov-2010
|
||||
Readme file
|
||||
|
||||
1. ABOUT THIS RELEASE
|
||||
@@ -7,33 +7,46 @@ Readme file
|
||||
2.2. Install procedure
|
||||
2.3. Migration from previous version
|
||||
3. FEATURES
|
||||
3.1. Changes since 0.9.1
|
||||
3.1. Changes since 1.0
|
||||
3.2. Known limitations
|
||||
3.3. Known issues
|
||||
|
||||
1. ABOUT THIS RELEASE
|
||||
==================
|
||||
Thank you for downloading the seventh packaged release of iTop. This version is
|
||||
the first complete version of iTop: it aims at being really used professionally.
|
||||
Thank you for downloading the eigth packaged release of iTop. This version is
|
||||
a maintenance release. It aims at upgrading seemlessly an existing 1.0 installation.
|
||||
|
||||
Additional documentation can be downloaded from http://www.combodo.com/itopdocumentation
|
||||
- User guide
|
||||
- Administrator guide
|
||||
- Customization guide
|
||||
- How to upgrade from previous versions
|
||||
- Implementation guide
|
||||
|
||||
iTop is released under the GPL (v3) license. (Check license.txt in this directory).
|
||||
The source code of iTop can be found on SourceForge: http://itop.sourceforge.net
|
||||
|
||||
1.1 Special Thanks To:
|
||||
1.1 Should I upgrade to 1.0.1 ?
|
||||
---------------------------
|
||||
This maintenance release fixes a number of usability issues of iTop 1.0:
|
||||
- Better handling of forms: fields validation and default values handling have been improved
|
||||
- Support of IE8 and Safari
|
||||
- Support of IIS
|
||||
- Support of localized texts in the User Portal
|
||||
|
||||
If any of the above items is important for you, then you should upgrade your version of iTop.
|
||||
If you are Brazilian and want to run iTop on IIS with IE8, then this release is for you !
|
||||
|
||||
|
||||
1.2 Special Thanks To:
|
||||
-----------------
|
||||
Bruno Bonfils for his guidance about LDAP and authentication.
|
||||
Randall Badilla Castro for the Spanish translation.
|
||||
Jonathan Lucas and David Gumbel from ITOMIG BmBh, for the German translation.
|
||||
Jonathan Lucas and David Gumbel from ITOMIG Gmbh, for the German translation.
|
||||
Christian Lempereur and Olivier Fouquet for their feedbacks.
|
||||
Everaldo Coelho and the Oxygen Team for their wonderful icons.
|
||||
The JQuery team and the all the jQuery plugins authors for developing such a powerful library.
|
||||
|
||||
Phil Eddies for the numerous feedbacks provided.
|
||||
Marco Tulio for the Portuguese (Brazilian) translation
|
||||
|
||||
2. INSTALLATION
|
||||
============
|
||||
@@ -44,11 +57,11 @@ Server configuration:
|
||||
iTop is based on the AMP (Apache / MySQL / PHP) platform and requires PHP 5.2 and
|
||||
MySQL 5. The installation of iTop does not require any command line access to the
|
||||
server. The only operations required to install iTop are: copying the files to the
|
||||
server and browsing web pages.
|
||||
server and browsing web pages. iTop can be installed on Apache and IIS.
|
||||
|
||||
Client configuration:
|
||||
End-user configuration:
|
||||
Although iTop should work with most modern web browsers, the application has been
|
||||
tested mostly on Firefox 3, IE7/IE8 and Chrome. iTop was designed for at least a
|
||||
tested mostly Firefox 3, IE8, Safari 5 and Chrome. iTop was designed for at least a
|
||||
1024x768 screen resolution. For the graphical view of the impact analysis, Flash
|
||||
version 8 or higher is required.
|
||||
|
||||
@@ -70,112 +83,96 @@ innodb_flush_method = O_DSYNC
|
||||
On some systems you'll see a 5 to 10 times performance boost for writing data into
|
||||
the MySQL database !
|
||||
|
||||
2.3. Migrating from a previous version
|
||||
---------------------------------
|
||||
Please refer to the migration guide available at http://www.combodo.com/itopdocumentation.
|
||||
2.3. Migrating from 1.0
|
||||
------------------
|
||||
Overwrite your current installation files with the new ones.
|
||||
Configuration file, Data model files, and the database made by iTop 1.0 are
|
||||
fully compatible with iTop 1.0.1.
|
||||
|
||||
2.4. Migrating from 0.9
|
||||
------------------
|
||||
Depending on your current situation, there are several possible migration paths.
|
||||
Please refer to the migration guide available at http://www.combodo.com/itopdocumentation.
|
||||
|
||||
3. FEATURES
|
||||
========
|
||||
|
||||
3.1. Changes since 0.9.1
|
||||
-------------------
|
||||
3.1. Changes since 1.0
|
||||
-----------------
|
||||
|
||||
Version 1.0 is a major release.
|
||||
Version 1.0.1 is a maintenance release.
|
||||
|
||||
Localization
|
||||
------------
|
||||
iTop is localized: English, French, Spanish and German are available.
|
||||
|
||||
User portal
|
||||
-----------
|
||||
Customers may submit their request directly into a dedicated page.
|
||||
The same page shows a report of ongoing requests.
|
||||
|
||||
SLA Management
|
||||
--------------
|
||||
SLAs can be defined in the service management module.
|
||||
An escalation deadline is automatically computed upon ticket creation.
|
||||
In the tickets dashboard, tickets close to reach the deadline are highlighted.
|
||||
When the deadline is reached, the ticket automatically switches to an "escalation"
|
||||
state. An acknowledgement is required before returning to normal operations on
|
||||
that ticket.
|
||||
|
||||
Modular setup
|
||||
-------------
|
||||
It is now possible to select ITIL modules you would like to use.
|
||||
For instance, you might want to install only the configuration management
|
||||
along with incident management.
|
||||
|
||||
Portuguese (Brazil) has been added.
|
||||
German localization reviewed.
|
||||
|
||||
Major changes
|
||||
-------------
|
||||
- A brand new data model has been designed to make iTop more compliant to ITIL.
|
||||
- Graphical views have been developed to represent the relations between CIS.
|
||||
Two views are available today.
|
||||
* "impact" defines the CIs that are impacted by a given CI.
|
||||
* "depends on" defines the CIs that are a threat to a given CI.
|
||||
When creating an incident ticket, the impacted CIs and contacts to notify are
|
||||
automatically computed, and attached to the ticket.
|
||||
- The UI has been reviewed to make the application more professional.
|
||||
- The CSV import tool has been improved to make it easier to use.
|
||||
- A Web service has been developed to allow tickets to be created automatically
|
||||
from emails. This feature simplifies ticket creation for end-users.
|
||||
- User management: Finalized the UI to create new users and manage their profiles
|
||||
- Authentication: Added the possibility to rely on an LDAP authentication, or
|
||||
and external authentication (e.g. Web Server single sign-on, relying on a .htaccess file)
|
||||
|
||||
None: this is a maintenance release!
|
||||
|
||||
Minor changes
|
||||
-------------
|
||||
- User welcome splash screen: message displayed to new users, the first time
|
||||
they logon to iTop
|
||||
- Implemented validation of attributes entered in forms
|
||||
- import.php has been finalized, and is the preferred way to load/synchronize
|
||||
data in a non-interactive way
|
||||
- New menu to edit the Audit Category and Rules
|
||||
#246 The page import.php can be used in CLI mode, allowing for massive data load
|
||||
#311 Improved the reporting in the bulk import GUI (reconciliation of external keys, how to specify "undefined")
|
||||
#293 Show the IP address against the device in the IP usage table for a subnet
|
||||
#276 Show mandatory fields during CSV import
|
||||
#285 Email addresses displayed as Mailto hyperlinks
|
||||
Nicer display of the CSV import results...
|
||||
Special passthrough mode for big XML pages output.
|
||||
Allow n:n links to link several times to the same remote object (if "duplicates)=> true in the linkedset definition)
|
||||
#284 Improved the behavior and reporting when attempting to create a document after a huge file
|
||||
#111 Improved the data loader, and added a REST service to load data from a file.
|
||||
This is particularly interesting to facilitate the migration from an older installation.
|
||||
|
||||
Browser compatibility
|
||||
---------------------
|
||||
Tested successfully with IE8 and Chrome.
|
||||
Fixed the "Relationships" Flash navigator so that it works also on Safari. (tested with Safari 5.0.2 on Windows) (Trac #310)
|
||||
- Fixed the search form, and also fixed the search/selection of objects to link (n:n links) that was broken on IE8.
|
||||
Fix to prevent IE 8 from running in IE7 compatibility mode... to be tested...
|
||||
|
||||
|
||||
Security improvements
|
||||
---------------------
|
||||
- Data Administration menu is now restricted to administrators and
|
||||
configuration managers
|
||||
- Administration menu restricted to administrators
|
||||
- The same restrictions apply whenever a user attempts to access the pages directly
|
||||
- New setting to enforce HTTPS
|
||||
- Strong encryption of passwords
|
||||
- Prevent users from listing the application directories
|
||||
|
||||
#300 When logged onto an iTop instance, you are allowed on any other instance
|
||||
|
||||
Bugs fixed
|
||||
----------
|
||||
The complete list can be reviewed on http://sourceforge.net/apps/trac/itop/report/1
|
||||
|
||||
#182 Setup fails with mysql error 1046 or 1146
|
||||
#144 Could not create a workgroup
|
||||
#97 Issue when removing an organization
|
||||
#105 Issue in exporting a given class of object
|
||||
#106 Importing data using import CSV
|
||||
#116 When modifying a user, the link with the profile(s) is lost.
|
||||
#98 Computation of free IPs in a subnet is wrong
|
||||
#126 'magic_quotes_gpc' test issue during setup
|
||||
#128 Issue when using AttributeBlob not mandatory
|
||||
#136 Context menus
|
||||
#102 Allow users to change their password.
|
||||
#210 Error message when trying to uploading a big file
|
||||
#139 mysSQL error: "truncated column", or truncated string
|
||||
#223 Trim spaces in CSV imports
|
||||
#215 Support several characters encoding for the CSV imports
|
||||
#239 Issue with character set (impacting searches with accents)
|
||||
#234 PHP Strict Standards warnings
|
||||
#140 Check that user logins are unique
|
||||
#286 GetAbsoluteUrl creates broken links on IIS
|
||||
#278 Missing PHP5 modules not detected properly
|
||||
#289 Misleading errors when apache not authorized to write files in "setup" directory
|
||||
#295 Unable to update or insert data
|
||||
#313 Provider Contracts are not filtered by Allowed Organizations
|
||||
#309 some of php-ofc-library files are missing
|
||||
#315 Default organization not handled properly when there is just one organization allowed for the user
|
||||
#308 Subnet / Free IPs: the subnet address is reserved (e.g. x.x.x.0)
|
||||
#312 Exclamation sign not displayed for mandatory fields
|
||||
#307 Auto-complete not reporting wrong selection
|
||||
#302 Error: Unknown variable sIcon
|
||||
#298 CSV template file opened in the browser instead of "downloaded"
|
||||
#245 Search form gets too specialized
|
||||
#306 Password gets corrupted if the admin forgets to select a profile
|
||||
#297 Fixed a reporting issue on the SOAP service CreateIncidentTicket
|
||||
#296 Incorrect display of Service/Subcategory localized characters in the portal
|
||||
#292 Could not leave "User Satisfaction" field undefined
|
||||
#258 Context automatically selected when searching on organization
|
||||
#282 OQL Error when using functions
|
||||
#288 Some multi objects OQL queries do not work
|
||||
Fixed a bug in the XML encoding function
|
||||
Fixed the issue "Object already modified". The mechanism that prevents a user from submitting the same form twice has been redesigned.
|
||||
#283 Fixed issue with the default value of Enum attributes
|
||||
Fixed limitation: tickets named automatically even if a name is specified (attribute : ref) ; this is stopper when importing tickets from an existing workflow tool
|
||||
|
||||
|
||||
3.2. Known limitations (https://sourceforge.net/apps/trac/itop/report/3)
|
||||
-----------------
|
||||
#71 The same MySQL credentials are used during the setup and for running the application.
|
||||
#246 Massive data load requiring to setup specific HTTP sessions with higher timeouts and memory limits
|
||||
#257 Could not delete more than 997 items when SUHOSIN is installed with its default settings (See TRAC)
|
||||
#265 Add reconciliations keys into CSV template
|
||||
Internet Explorer 7 is not supported (neither IE7 nor IE8 in compatibility mode)
|
||||
|
||||
|
||||
3.3. Known issues (https://sourceforge.net/apps/trac/itop/report/3)
|
||||
|
||||
@@ -166,7 +166,7 @@ function CheckPHPVersion(SetupWebPage $oP)
|
||||
$oP->error("Error: The current PHP Version (".phpversion().") is lower than the minimum required version (".PHP_MIN_VERSION.")");
|
||||
return false;
|
||||
}
|
||||
$aMandatoryExtensions = array('mysql', 'iconv', 'simplexml', 'soap');
|
||||
$aMandatoryExtensions = array('mysql', 'iconv', 'simplexml', 'soap', 'hash', 'json', 'session', 'pcre');
|
||||
$aOptionalExtensions = array('mcrypt' => 'Strong encryption will not be used.',
|
||||
'ldap' => 'LDAP authentication will be disabled.');
|
||||
asort($aMandatoryExtensions); // Sort the list to look clean !
|
||||
@@ -1058,6 +1058,9 @@ function SetupFinished(SetupWebPage $oP, $aParamValues, $iCurrentStep, Config $o
|
||||
$sAuthPwd = $aParamValues['auth_pwd'];
|
||||
try
|
||||
{
|
||||
$sSessionName = sprintf('iTop-%x', rand());
|
||||
$oConfig->Set('session_name', $sSessionName);
|
||||
session_name($sSessionName);
|
||||
session_start();
|
||||
|
||||
// Write the final configuration file
|
||||
@@ -1179,6 +1182,15 @@ else
|
||||
$oP->output();
|
||||
exit;
|
||||
}
|
||||
if (!is_writable(dirname(FINAL_CONFIG_FILE).'/setup'))
|
||||
{
|
||||
$oP->add("<h1>iTop configuration wizard</h1>\n");
|
||||
$oP->add("<h2>Fatal error</h2>\n");
|
||||
$oP->error("<b>Error:</b> the directory where to store temporary setup files is not writable.");
|
||||
$oP->p("The wizard cannot create operate. Please make sure that the directory '<b>".realpath(dirname(FINAL_CONFIG_FILE))."/setup</b>' is writable for the web server.");
|
||||
$oP->output();
|
||||
exit;
|
||||
}
|
||||
|
||||
}
|
||||
try
|
||||
|
||||
@@ -41,7 +41,11 @@ class XMLDataLoader
|
||||
protected $m_bSessionActive;
|
||||
protected $m_oChange;
|
||||
protected $m_sCacheFileName;
|
||||
|
||||
|
||||
protected $m_aErrors;
|
||||
protected $m_aWarnings;
|
||||
protected $m_iCountCreated;
|
||||
|
||||
public function __construct($sConfigFileName)
|
||||
{
|
||||
$this->m_aKeys = array();
|
||||
@@ -51,7 +55,9 @@ class XMLDataLoader
|
||||
$this->InitDataModel($sConfigFileName);
|
||||
$this->LoadKeysCache();
|
||||
$this->m_bSessionActive = true;
|
||||
|
||||
$this->m_aErrors = array();
|
||||
$this->m_aWarnings = array();
|
||||
$this->m_iCountCreated = 0;
|
||||
}
|
||||
|
||||
public function StartSession($oChange)
|
||||
@@ -63,10 +69,38 @@ class XMLDataLoader
|
||||
$this->m_bSessionActive = true;
|
||||
}
|
||||
|
||||
public function EndSession()
|
||||
public function EndSession($bStrict = false)
|
||||
{
|
||||
$this->ResolveExternalKeys();
|
||||
$this->m_bSessionActive = false;
|
||||
|
||||
if (count($this->m_aErrors) > 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
elseif ($bStrict && count($this->m_aWarnings) > 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public function GetErrors()
|
||||
{
|
||||
return $this->m_aErrors;
|
||||
}
|
||||
|
||||
public function GetWarnings()
|
||||
{
|
||||
return $this->m_aWarnings;
|
||||
}
|
||||
|
||||
public function GetCountCreated()
|
||||
{
|
||||
return $this->m_iCountCreated;
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
@@ -116,7 +150,10 @@ class XMLDataLoader
|
||||
{
|
||||
$sData = serialize( array('keys' => $this->m_aKeys,
|
||||
'objects' => $this->m_aObjectsCache,
|
||||
'change' => $this->m_oChange));
|
||||
'change' => $this->m_oChange,
|
||||
'errors' => $this->m_aErrors,
|
||||
'warnings' => $this->m_aWarnings,
|
||||
));
|
||||
fwrite($hFile, $sData);
|
||||
fclose($hFile);
|
||||
}
|
||||
@@ -137,7 +174,9 @@ class XMLDataLoader
|
||||
$aCache = unserialize($sFileContent);
|
||||
$this->m_aKeys = $aCache['keys'];
|
||||
$this->m_aObjectsCache = $aCache['objects'];
|
||||
$this->m_oChange = $aCache['change'];
|
||||
$this->m_oChange = $aCache['change'];
|
||||
$this->m_aErrors = $aCache['errors'];
|
||||
$this->m_aWarnings = $aCache['warnings'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,6 +209,12 @@ class XMLDataLoader
|
||||
$aReplicas = array();
|
||||
foreach($oXml as $sClass => $oXmlObj)
|
||||
{
|
||||
if (!MetaModel::IsValidClass($sClass))
|
||||
{
|
||||
SetupWebPage::log_error("Unknown class - $sClass");
|
||||
throw(new Exception("Unknown class - $sClass"));
|
||||
}
|
||||
|
||||
$iSrcId = (integer)$oXmlObj['id']; // Mandatory to cast
|
||||
|
||||
// Import algorithm
|
||||
@@ -177,40 +222,84 @@ class XMLDataLoader
|
||||
// for all attribute that is neither an external field
|
||||
// not an external key, assign it
|
||||
// Store all external keys for further reference
|
||||
// Create the object an store the correspondence between its newly created Id
|
||||
// Create the object an store the correspondance between its newly created Id
|
||||
// and its original Id
|
||||
// Once all the objects have been created re-assign all the external keys to
|
||||
// their actual Ids
|
||||
$oTargetObj = MetaModel::NewObject($sClass);
|
||||
foreach(MetaModel::ListAttributeDefs($sClass) as $sAttCode=>$oAttDef)
|
||||
foreach($oXmlObj as $sAttCode => $oSubNode)
|
||||
{
|
||||
if (!MetaModel::IsValidAttCode($sClass, $sAttCode))
|
||||
{
|
||||
$sMsg = "Unknown attribute code - $sClass/$sAttCode";
|
||||
SetupWebPage::log_error($sMsg);
|
||||
throw(new Exception($sMsg));
|
||||
}
|
||||
|
||||
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
|
||||
if (($oAttDef->IsWritable()) && ($oAttDef->IsScalar()))
|
||||
{
|
||||
if ($oAttDef->IsExternalKey())
|
||||
{
|
||||
$iDstObj = (integer)($oXmlObj->$sAttCode);
|
||||
// Attempt to find the object in the list of loaded objects
|
||||
$iExtKey = $this->GetObjectKey($oAttDef->GetTargetClass(), $iDstObj);
|
||||
if ($iExtKey == 0)
|
||||
if (substr(trim($oSubNode), 0, 6) == 'SELECT')
|
||||
{
|
||||
$iExtKey = -$iDstObj; // Convention: Unresolved keys are stored as negative !
|
||||
$oTargetObj->RegisterAsDirty();
|
||||
$sQuery = trim($oSubNode);
|
||||
$oSet = new DBObjectSet(DBObjectSearch::FromOQL($sQuery));
|
||||
$iMatches = $oSet->Count();
|
||||
if ($iMatches == 1)
|
||||
{
|
||||
$oFoundObject = $oSet->Fetch();
|
||||
$iExtKey = $oFoundObject->GetKey();
|
||||
}
|
||||
else
|
||||
{
|
||||
$sMsg = "Ext key not reconcilied - $sClass/$iSrcId - $sAttCode: '".$sQuery."' - found $iMatches matche(s)";
|
||||
SetupWebPage::log_error($sMsg);
|
||||
$this->m_aErrors[] = $sMsg;
|
||||
$iExtKey = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$iDstObj = (integer)($oSubNode);
|
||||
// Attempt to find the object in the list of loaded objects
|
||||
$iExtKey = $this->GetObjectKey($oAttDef->GetTargetClass(), $iDstObj);
|
||||
if ($iExtKey == 0)
|
||||
{
|
||||
$iExtKey = -$iDstObj; // Convention: Unresolved keys are stored as negative !
|
||||
$oTargetObj->RegisterAsDirty();
|
||||
}
|
||||
// here we allow external keys to be invalid because we will resolve them later on...
|
||||
}
|
||||
// here we allow external keys to be invalid because we will resolve them later on...
|
||||
//$oTargetObj->CheckValue($sAttCode, $iExtKey);
|
||||
$oTargetObj->Set($sAttCode, $iExtKey);
|
||||
}
|
||||
elseif ($oAttDef instanceof AttributeBlob)
|
||||
{
|
||||
$sMimeType = (string) $oSubNode->mimetype;
|
||||
$sFileName = (string) $oSubNode->filename;
|
||||
$data = base64_decode((string) $oSubNode->data);
|
||||
$oDoc = new ormDocument($data, $sMimeType, $sFileName);
|
||||
$oTargetObj->Set($sAttCode, $oDoc);
|
||||
}
|
||||
else
|
||||
{
|
||||
// tested by Romain, little impact on perf (not significant on the intial setup)
|
||||
$res = $oTargetObj->CheckValue($sAttCode, (string)$oXmlObj->$sAttCode);
|
||||
$value = (string)$oSubNode;
|
||||
|
||||
if ($value == '')
|
||||
{
|
||||
$value = $oAttDef->GetNullValue();
|
||||
}
|
||||
|
||||
$res = $oTargetObj->CheckValue($sAttCode, $value);
|
||||
if ($res !== true)
|
||||
{
|
||||
// $res contains the error description
|
||||
SetupWebPage::log_error("Value not allowed - $sClass/$iSrcId - $sAttCode: '".$oXmlObj->$sAttCode."' ; $res");
|
||||
throw(new Exception("Value not allowed - $sClass/$iSrcId - $sAttCode: '".$oXmlObj->$sAttCode."' ; $res"));
|
||||
$sMsg = "Value not allowed - $sClass/$iSrcId - $sAttCode: '".$oSubNode."' ; $res";
|
||||
SetupWebPage::log_error($sMsg);
|
||||
$this->m_aErrors[] = $sMsg;
|
||||
}
|
||||
$oTargetObj->Set($sAttCode, (string)$oXmlObj->$sAttCode);
|
||||
$oTargetObj->Set($sAttCode, $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -283,12 +372,13 @@ class XMLDataLoader
|
||||
{
|
||||
$iObjId = $oTargetObj->DBInsertNoReload();
|
||||
}
|
||||
$this->m_iCountCreated++;
|
||||
}
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
SetupWebPage::log_error("An object could not be loaded - $sClass/$iSrcId - ".$e->getMessage());
|
||||
echo $e->GetHtmlDesc();
|
||||
SetupWebPage::log_error("An object could not be recorded - $sClass/$iSrcId - ".$e->getMessage());
|
||||
$this->m_aErrors[] = "An object could not be recorded - $sClass/$iSrcId - ".$e->getMessage();
|
||||
}
|
||||
$aParentClasses = MetaModel::EnumParentClasses($sClass);
|
||||
$aParentClasses[] = $sClass;
|
||||
@@ -323,6 +413,7 @@ class XMLDataLoader
|
||||
{
|
||||
$sMsg = "unresolved extkey in $sClass::".$oTargetObj->GetKey()."(".$oTargetObj->GetName().")::$sAttCode=$sTargetClass::$iTempKey";
|
||||
SetupWebPage::log_warning($sMsg);
|
||||
$this->m_aWarnings[] = $sMsg;
|
||||
//echo "<pre>aKeys[".$sTargetClass."]:\n";
|
||||
//print_r($this->m_aKeys[$sTargetClass]);
|
||||
//echo "</pre>\n";
|
||||
@@ -349,7 +440,7 @@ class XMLDataLoader
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
echo $e->GetHtmlDesc();
|
||||
$this->m_aErrors[] = "The object changes could not be tracked - $sClass/$iSrcId - ".$e->getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1379,6 +1379,17 @@ class TestImportREST extends TestWebServices
|
||||
),
|
||||
'csvdata' => "name;status;owner_name;location_name;location_id->org_name;os_family;os_version;management_ip;cpu;ram;brand;model;serial_number\nlocalhost.;production;Demo;Grenoble;Demo;Ubuntu 9.10;2.6.31-19-generic-#56-Ubuntu SMP Thu Jan 28 01:26:53 UTC 2010;16.16.230.232;Intel(R) Core(TM)2 Duo CPU T7100 @ 1.80GHz;2005;Hewlett-Packard;HP Compaq 6510b (GM108UC#ABF);CNU7370BNP",
|
||||
),
|
||||
array(
|
||||
'desc' => 'Load server - wrong value for status',
|
||||
'login' => 'admin',
|
||||
'password' => 'admin',
|
||||
'args' => array(
|
||||
'class' => 'Server',
|
||||
'output' => 'details',
|
||||
'reconciliationkeys' => '',
|
||||
),
|
||||
'csvdata' => "name;status;owner_name;location_name;location_id->org_name;os_family;os_version;management_ip;cpu;ram;brand;model;serial_number\nlocalhost.;Production;Demo;Grenoble;Demo;Ubuntu 9.10;2.6.31-19-generic-#56-Ubuntu SMP Thu Jan 28 01:26:53 UTC 2010;16.16.230.232;Intel(R) Core(TM)2 Duo CPU T7100 @ 1.80GHz;2005;Hewlett-Packard;HP Compaq 6510b (GM108UC#ABF);CNU7370BNP",
|
||||
),
|
||||
array(
|
||||
'desc' => 'Load NW if',
|
||||
'login' => 'admin',
|
||||
@@ -1619,7 +1630,7 @@ $aWebServices = array(
|
||||
'initial situation blah blah blah', /* sInitialSituation */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aCallerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Demo'))), /* aCustomerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'HW Management'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Computers and peripherals'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aServiceSubcategoryDesc */
|
||||
'sub product of the service', /* sProduct */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Hardware support'))), /* aWorkgroupDesc */
|
||||
@@ -1655,7 +1666,7 @@ $aWebServices = array(
|
||||
'The power supply suddenly started to warm up', /* sInitialSituation */
|
||||
new SOAPExternalKeySearch(), /* aCallerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Demo'))), /* aCustomerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'HW Management'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Computers and peripherals'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aServiceSubcategoryDesc */
|
||||
'sub product of the service', /* sProduct */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Hardware support'))), /* aWorkgroupDesc */
|
||||
@@ -1681,7 +1692,7 @@ $aWebServices = array(
|
||||
'The power supply suddenly started to warm up', /* sInitialSituation */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aCallerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Demo'))), /* aCustomerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'HW Management'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Computers and peripherals'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aServiceSubcategoryDesc */
|
||||
'sub product of the service', /* sProduct */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Hardware support'))), /* aWorkgroupDesc */
|
||||
@@ -1707,7 +1718,7 @@ $aWebServices = array(
|
||||
'The power supply suddenly started to warm up', /* sInitialSituation */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aCallerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Demo'))), /* aCustomerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'HW Management'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Computers and peripherals'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aServiceSubcategoryDesc */
|
||||
'sub product of the service', /* sProduct */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Hardware support'))), /* aWorkgroupDesc */
|
||||
@@ -1733,7 +1744,7 @@ $aWebServices = array(
|
||||
'Tried to join the shuttle', /* sInitialSituation */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aCallerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Demo'))), /* aCustomerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'HW Management'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Computers and peripherals'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aServiceSubcategoryDesc */
|
||||
'sub product of the service', /* sProduct */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Hardware support'))), /* aWorkgroupDesc */
|
||||
@@ -1754,7 +1765,7 @@ $aWebServices = array(
|
||||
'Tried to join the shuttle', /* sInitialSituation */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aCallerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Demo'))), /* aCustomerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'HW Management'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Computers and peripherals'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aServiceSubcategoryDesc */
|
||||
'sub product of the service', /* sProduct */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Hardware support'))), /* aWorkgroupDesc */
|
||||
@@ -1774,7 +1785,7 @@ $aWebServices = array(
|
||||
'Tried to join the shuttle', /* sInitialSituation */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1000))), /* aCallerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Demo'))), /* aCustomerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'HW Management'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Computers and peripherals'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aServiceSubcategoryDesc */
|
||||
'sub product of the service', /* sProduct */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Hardware support'))), /* aWorkgroupDesc */
|
||||
@@ -1795,7 +1806,7 @@ $aWebServices = array(
|
||||
'Tried to join the shuttle', /* sInitialSituation */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aCallerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Demo'))), /* aCustomerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'HW Management'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Computers and peripherals'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aServiceSubcategoryDesc */
|
||||
'sub product of the service', /* sProduct */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Hardware support'))), /* aWorkgroupDesc */
|
||||
@@ -1816,7 +1827,7 @@ $aWebServices = array(
|
||||
'Tried to join the shuttle', /* sInitialSituation */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aCallerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Demo'))), /* aCustomerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'HW Management'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Computers and peripherals'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aServiceSubcategoryDesc */
|
||||
'sub product of the service', /* sProduct */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Hardware support'))), /* aWorkgroupDesc */
|
||||
@@ -1837,7 +1848,7 @@ $aWebServices = array(
|
||||
'Tried to join the shuttle', /* sInitialSituation */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aCallerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Demo'))), /* aCustomerDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'HW Management'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Computers and peripherals'))), /* aServiceDesc */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('id', 1))), /* aServiceSubcategoryDesc */
|
||||
'sub product of the service', /* sProduct */
|
||||
new SOAPExternalKeySearch(array(new SOAPSearchCondition('name', 'Hardware support'))), /* aWorkgroupDesc */
|
||||
@@ -1862,7 +1873,7 @@ class TestSoap extends TestSoapWebService
|
||||
global $aSOAPMapping;
|
||||
|
||||
// this file is generated dynamically with location = here
|
||||
$sWsdlUri = 'http'.(empty($_SERVER['HTTPS']) ? '' : 's').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/../webservices/itop.wsdl.php';
|
||||
$sWsdlUri = 'http'.(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off') ? 's' : '').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/../webservices/itop.wsdl.php';
|
||||
|
||||
ini_set("soap.wsdl_cache_enabled","0");
|
||||
$this->m_SoapClient = new SoapClient
|
||||
@@ -2101,4 +2112,67 @@ class TestTriggerAndEmail extends TestBizModel
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
class TestCreateObjects extends TestBizModel
|
||||
{
|
||||
static public function GetName()
|
||||
{
|
||||
return 'Itop - create objects';
|
||||
}
|
||||
|
||||
static public function GetDescription()
|
||||
{
|
||||
return 'Create weird objects (reproduce a bug?)';
|
||||
}
|
||||
|
||||
static public function GetConfigFile() {return '../config-itop.php';}
|
||||
|
||||
protected function DoExecute()
|
||||
{
|
||||
$oMyObj = MetaModel::NewObject("Server");
|
||||
$oMyObj->Set("name", "test".rand(1,1000));
|
||||
$oMyObj->Set("org_id", 2);
|
||||
$oMyObj->Set("status", 'production');
|
||||
$this->ObjectToDB($oMyObj, $bReload = true);
|
||||
echo "<p>Created: {$oMyObj->GetHyperLink()}</p>";
|
||||
|
||||
$sTicketRef = "I-abcdef";
|
||||
echo "<p>Creating: $sTicketRef</p>";
|
||||
$oMyObj = MetaModel::NewObject("Incident");
|
||||
$oMyObj->Set("ref", $sTicketRef);
|
||||
$oMyObj->Set("title", "my title");
|
||||
$oMyObj->Set("description", "my description");
|
||||
$oMyObj->Set("ticket_log", "my ticket log");
|
||||
$oMyObj->Set("start_date", "2010-03-08 17:37:00");
|
||||
$oMyObj->Set("status", "resolved");
|
||||
$oMyObj->Set("caller_id", 1);
|
||||
$oMyObj->Set("org_id", 1);
|
||||
$oMyObj->Set("urgency", 3);
|
||||
$oMyObj->Set("agent_id", 1);
|
||||
$oMyObj->Set("close_date", "0000-00-00 00:00:00");
|
||||
$oMyObj->Set("last_update", "2010-04-08 16:47:29");
|
||||
$oMyObj->Set("solution", "branche ton pc!");
|
||||
// External key given as a string -> should be casted to an integer
|
||||
$oMyObj->Set("service_id", "1");
|
||||
$oMyObj->Set("servicesubcategory_id", "1");
|
||||
$oMyObj->Set("product", "");
|
||||
$oMyObj->Set("impact", 2);
|
||||
$oMyObj->Set("priority", 3);
|
||||
$oMyObj->Set("related_problem_id", 0);
|
||||
$oMyObj->Set("related_change_id", 0);
|
||||
$oMyObj->Set("assignment_date", "");
|
||||
$oMyObj->Set("resolution_date", "");
|
||||
$oMyObj->Set("tto_escalation_deadline", "");
|
||||
$oMyObj->Set("ttr_escalation_deadline", "");
|
||||
$oMyObj->Set("closure_deadline", "");
|
||||
$oMyObj->Set("resolution_code", "fixed");
|
||||
$oMyObj->Set("user_satisfaction", "");
|
||||
$oMyObj->Set("user_commment", "");
|
||||
$oMyObj->Set("workgroup_id", 4);
|
||||
$this->ObjectToDB($oMyObj, $bReload = true);
|
||||
echo "<p>Created: {$oMyObj->GetHyperLink()}</p>";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
||||
172
webservices/backoffice.dataloader.php
Normal file
172
webservices/backoffice.dataloader.php
Normal file
@@ -0,0 +1,172 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Does load data from XML files (currently used in the setup and the backoffice data loader utility)
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
/**
|
||||
* This page is called to load an XML file into the database
|
||||
* parameters
|
||||
* 'file' string Name of the file to load
|
||||
*/
|
||||
define('SAFE_MINIMUM_MEMORY', 256*1024*1024);
|
||||
require_once('../application/utils.inc.php');
|
||||
require_once("../application/nicewebpage.class.inc.php");
|
||||
// required because the class xmldataloader is reporting errors in the setup.log file
|
||||
require_once('../setup/setuppage.class.inc.php');
|
||||
|
||||
|
||||
function SetMemoryLimit($oP)
|
||||
{
|
||||
$sMemoryLimit = trim(ini_get('memory_limit'));
|
||||
if (empty($sMemoryLimit))
|
||||
{
|
||||
// On some PHP installations, memory_limit does not exist as a PHP setting!
|
||||
// (encountered on a 5.2.0 under Windows)
|
||||
// In that case, ini_set will not work, let's keep track of this and proceed with the data load
|
||||
$oP->p("No memory limit has been defined in this instance of PHP");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Check that the limit will allow us to load the data
|
||||
//
|
||||
$iMemoryLimit = utils::ConvertToBytes($sMemoryLimit);
|
||||
if ($iMemoryLimit < SAFE_MINIMUM_MEMORY)
|
||||
{
|
||||
if (ini_set('memory_limit', SAFE_MINIMUM_MEMORY) === FALSE)
|
||||
{
|
||||
$oP->p("memory_limit is too small: $iMemoryLimit and can not be increased by the script itself.");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oP->p("memory_limit increased from $iMemoryLimit to ".SAFE_MINIMUM_MEMORY.".");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Main
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
require_once('../core/config.class.inc.php');
|
||||
require_once('../core/log.class.inc.php');
|
||||
require_once('../core/kpi.class.inc.php');
|
||||
require_once('../core/cmdbsource.class.inc.php');
|
||||
require_once('../setup/xmldataloader.class.inc.php');
|
||||
|
||||
define('FINAL_CONFIG_FILE', '../config-itop.php');
|
||||
|
||||
// Never cache this page
|
||||
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
|
||||
header("Expires: Fri, 17 Jul 1970 05:00:00 GMT"); // Date in the past
|
||||
|
||||
Utils::SpecifyConfigFile(FINAL_CONFIG_FILE);
|
||||
|
||||
/**
|
||||
* Main program
|
||||
*/
|
||||
$sFileName = Utils::ReadParam('file', '');
|
||||
|
||||
$oP = new WebPage("iTop - Backoffice data loader");
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
// Note: the data model must be loaded first
|
||||
$oDataLoader = new XMLDataLoader(FINAL_CONFIG_FILE); // When called by the wizard, the final config is not yet there
|
||||
|
||||
if (empty($sFileName))
|
||||
{
|
||||
throw(new Exception("Missing argument 'file'"));
|
||||
}
|
||||
if (!file_exists($sFileName))
|
||||
{
|
||||
throw(new Exception("File $sFileName does not exist"));
|
||||
}
|
||||
|
||||
SetMemoryLimit($oP);
|
||||
|
||||
|
||||
// The XMLDataLoader constructor has initialized the DB, let's start a transaction
|
||||
CMDBSource::Query('SET AUTOCOMMIT=0');
|
||||
CMDBSource::Query('BEGIN WORK');
|
||||
|
||||
$oChange = MetaModel::NewObject("CMDBChange");
|
||||
$oChange->Set("date", time());
|
||||
$oChange->Set("userinfo", "Initialization");
|
||||
$iChangeId = $oChange->DBInsert();
|
||||
$oP->p("Starting data load.");
|
||||
$oDataLoader->StartSession($oChange);
|
||||
|
||||
$oDataLoader->LoadFile($sFileName);
|
||||
|
||||
$oP->p("Ending data load session");
|
||||
if ($oDataLoader->EndSession(true /* strict */))
|
||||
{
|
||||
$iCountCreated = $oDataLoader->GetCountCreated();
|
||||
CMDBSource::Query('COMMIT');
|
||||
|
||||
$oP->p("Data successfully written into the DB: $iCountCreated objects created");
|
||||
}
|
||||
else
|
||||
{
|
||||
CMDBSource::Query('ROLLBACK');
|
||||
$oP->p("Some issues have been encountered, changes will not be recorded, please review the source data");
|
||||
$aErrors = $oDataLoader->GetErrors();
|
||||
if (count($aErrors) > 0)
|
||||
{
|
||||
$oP->p('Errors ('.count($aErrors).')');
|
||||
foreach ($aErrors as $sMsg)
|
||||
{
|
||||
$oP->p(' * '.$sMsg);
|
||||
}
|
||||
}
|
||||
$aWarnings = $oDataLoader->GetWarnings();
|
||||
if (count($aWarnings) > 0)
|
||||
{
|
||||
$oP->p('Warnings ('.count($aWarnings).')');
|
||||
foreach ($aWarnings as $sMsg)
|
||||
{
|
||||
$oP->p(' * '.$sMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
$oP->p("An error happened while loading the data: ".$e->getMessage());
|
||||
$oP->p("Aborting (no data written)...");
|
||||
CMDBSource::Query('ROLLBACK');
|
||||
}
|
||||
|
||||
if (function_exists('memory_get_peak_usage'))
|
||||
{
|
||||
$oP->p("Information: memory peak usage: ".memory_get_peak_usage());
|
||||
}
|
||||
|
||||
$oP->Output();
|
||||
?>
|
||||
@@ -59,7 +59,7 @@ if (!empty($sExpression))
|
||||
// since this page is in a different folder, let's adjust the HTML 'base' attribute
|
||||
// to make the relative hyperlinks in the page work
|
||||
$sServerName = $_SERVER['SERVER_NAME'];
|
||||
$sProtocol = isset($_SERVER['HTTPS']) ? 'https' : 'http';
|
||||
$sProtocol = (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off')) ? 'https' : 'http';
|
||||
if ($sProtocol == 'http')
|
||||
{
|
||||
$sPort = ($_SERVER['SERVER_PORT'] == 80) ? '' : ':'.$_SERVER['SERVER_PORT'];
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
require_once('../application/application.inc.php');
|
||||
require_once('../application/webpage.class.inc.php');
|
||||
require_once('../application/csvpage.class.inc.php');
|
||||
require_once('../application/xmlpage.class.inc.php');
|
||||
require_once('../application/clipage.class.inc.php');
|
||||
|
||||
require_once('../application/startup.inc.php');
|
||||
|
||||
@@ -46,45 +46,66 @@ class BulkLoadException extends Exception
|
||||
|
||||
$aPageParams = array
|
||||
(
|
||||
'auth_user' => array
|
||||
(
|
||||
'mandatory' => true,
|
||||
'modes' => 'cli',
|
||||
'default' => null,
|
||||
'description' => 'login (must have enough rights to create objects of the given class)',
|
||||
),
|
||||
'auth_pwd' => array
|
||||
(
|
||||
'mandatory' => true,
|
||||
'modes' => 'cli',
|
||||
'default' => null,
|
||||
'description' => 'password',
|
||||
),
|
||||
'class' => array
|
||||
(
|
||||
'mandatory' => true,
|
||||
'modes' => 'http,cli',
|
||||
'default' => null,
|
||||
'description' => 'class of loaded objects',
|
||||
),
|
||||
'csvdata' => array
|
||||
(
|
||||
'mandatory' => true,
|
||||
'modes' => 'http',
|
||||
'default' => null,
|
||||
'description' => 'data',
|
||||
),
|
||||
'csvfile' => array
|
||||
(
|
||||
'mandatory' => true,
|
||||
'modes' => 'cli',
|
||||
'default' => '',
|
||||
'description' => 'local data file, replaces csvdata if specified',
|
||||
),
|
||||
'charset' => array
|
||||
(
|
||||
'mandatory' => false,
|
||||
'modes' => 'http,cli',
|
||||
'default' => 'UTF-8',
|
||||
'description' => 'Character set encoding of the CSV data: UTF-8, ISO-8859-1, WINDOWS-1251, WINDOWS-1252, ISO-8859-15',
|
||||
),
|
||||
// 'csvfile' => array
|
||||
// (
|
||||
// 'mandatory' => false,
|
||||
// 'default' => '',
|
||||
// 'description' => 'local data file, replaces csvdata if specified',
|
||||
// ),
|
||||
'separator' => array
|
||||
(
|
||||
'mandatory' => false,
|
||||
'modes' => 'http,cli',
|
||||
'default' => ';',
|
||||
'description' => 'column separator in CSV data',
|
||||
),
|
||||
'qualifier' => array
|
||||
(
|
||||
'mandatory' => false,
|
||||
'modes' => 'http,cli',
|
||||
'default' => '"',
|
||||
'description' => 'test qualifier in CSV data',
|
||||
),
|
||||
'output' => array
|
||||
(
|
||||
'mandatory' => false,
|
||||
'modes' => 'http,cli',
|
||||
'default' => 'summary',
|
||||
'description' => '[retcode] to return the count of lines in error, [summary] to return a concise report, [details] to get a detailed report (each line listed)',
|
||||
),
|
||||
@@ -92,6 +113,7 @@ $aPageParams = array
|
||||
'reportlevel' => array
|
||||
(
|
||||
'mandatory' => false,
|
||||
'modes' => 'http,cli',
|
||||
'default' => 'errors|warnings|created|changed|unchanged',
|
||||
'description' => 'combination of flags to limit the detailed output',
|
||||
),
|
||||
@@ -99,18 +121,21 @@ $aPageParams = array
|
||||
'reconciliationkeys' => array
|
||||
(
|
||||
'mandatory' => false,
|
||||
'modes' => 'http,cli',
|
||||
'default' => '',
|
||||
'description' => 'name of the columns used to identify existing objects and update them, or create a new one',
|
||||
),
|
||||
'simulate' => array
|
||||
(
|
||||
'mandatory' => false,
|
||||
'modes' => 'http,cli',
|
||||
'default' => '0',
|
||||
'description' => 'If set to 1, then the load will not be executed, but the expected report will be produced',
|
||||
),
|
||||
'comment' => array
|
||||
(
|
||||
'mandatory' => false,
|
||||
'modes' => 'http,cli',
|
||||
'default' => '',
|
||||
'description' => 'Comment to be added into the change log',
|
||||
),
|
||||
@@ -119,11 +144,28 @@ $aPageParams = array
|
||||
function UsageAndExit($oP)
|
||||
{
|
||||
global $aPageParams;
|
||||
$bModeCLI = utils::IsModeCLI();
|
||||
|
||||
$oP->p("USAGE:\n");
|
||||
foreach($aPageParams as $sParam => $aParamData)
|
||||
{
|
||||
$sDesc = $aParamData['description'].', '.($aParamData['mandatory'] ? 'mandatory' : 'optional, defaults to ['.$aParamData['default'].']');
|
||||
$oP->p("$sParam = $sDesc\n");
|
||||
$aModes = explode(',', $aParamData['modes']);
|
||||
if ($bModeCLI)
|
||||
{
|
||||
if (in_array('cli', $aModes))
|
||||
{
|
||||
$sDesc = $aParamData['description'].', '.($aParamData['mandatory'] ? 'mandatory' : 'optional, defaults to ['.$aParamData['default'].']');
|
||||
$oP->p("$sParam = $sDesc");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (in_array('http', $aModes))
|
||||
{
|
||||
$sDesc = $aParamData['description'].', '.($aParamData['mandatory'] ? 'mandatory' : 'optional, defaults to ['.$aParamData['default'].']');
|
||||
$oP->p("$sParam = $sDesc");
|
||||
}
|
||||
}
|
||||
}
|
||||
$oP->output();
|
||||
exit;
|
||||
@@ -157,16 +199,16 @@ function ReadMandatoryParam($oP, $sParam)
|
||||
/////////////////////////////////
|
||||
// Main program
|
||||
|
||||
if (false && utils::IsModeCLI())
|
||||
if (utils::IsModeCLI())
|
||||
{
|
||||
// Mode CLI under construction... sorry!
|
||||
$oP = new CLIPage("iTop - Bulk import");
|
||||
|
||||
// Next steps:
|
||||
// implement a new page: CLIPage, that does a very clean output
|
||||
// branch if in CLI mode
|
||||
// enable the new argument 'csvfile'
|
||||
// specific arguments: 'csvfile'
|
||||
//
|
||||
$sAuthUser = ReadMandatoryParam($oP, 'auth_user');
|
||||
$sAuthPwd = ReadMandatoryParam($oP, 'auth_user');
|
||||
$sCsvFile = ReadMandatoryParam($oP, 'csv_file');
|
||||
$sAuthPwd = ReadMandatoryParam($oP, 'auth_pwd');
|
||||
$sCsvFile = ReadMandatoryParam($oP, 'csvfile');
|
||||
if (UserRights::CheckCredentials($sAuthUser, $sAuthPwd))
|
||||
{
|
||||
UserRights::Login($sAuthUser); // Login & set the user's language
|
||||
@@ -176,6 +218,14 @@ if (false && utils::IsModeCLI())
|
||||
$oP->p("Access restricted or wrong credentials ('$sAuthUser')");
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!is_readable($sCsvFile))
|
||||
{
|
||||
$oP->p("Input file could not be found or could not be read: '$sCsvFile'");
|
||||
exit;
|
||||
}
|
||||
$sCSVData = file_get_contents($sCsvFile);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -184,6 +234,7 @@ else
|
||||
LoginWebPage::DoLogin(); // Check user rights and prompt if needed
|
||||
|
||||
$oP = new CSVPage("iTop - Bulk import");
|
||||
$sCSVData = utils::ReadPostedParam('csvdata');
|
||||
}
|
||||
|
||||
|
||||
@@ -196,7 +247,6 @@ try
|
||||
$sClass = ReadMandatoryParam($oP, 'class');
|
||||
$sSep = ReadParam($oP, 'separator');
|
||||
$sQualifier = ReadParam($oP, 'qualifier');
|
||||
$sCSVData = utils::ReadPostedParam('csvdata');
|
||||
$sCharSet = ReadParam($oP, 'charset');
|
||||
$sOutput = ReadParam($oP, 'output');
|
||||
// $sReportLevel = ReadParam($oP, 'reportlevel');
|
||||
@@ -279,6 +329,12 @@ try
|
||||
$aExtKeys = array();
|
||||
foreach($aRawFieldList as $iFieldId => $sFieldName)
|
||||
{
|
||||
$aMatches = array();
|
||||
if (preg_match('/^(.+)\*$/', $sFieldName, $aMatches))
|
||||
{
|
||||
// Ignore any trailing "star" (*) that simply indicates a mandatory field
|
||||
$sFieldName = $aMatches[1];
|
||||
}
|
||||
if (preg_match('/^(.*)->(.*)$/', trim($sFieldName), $aMatches))
|
||||
{
|
||||
// The column has been specified as "extkey->attcode"
|
||||
@@ -493,6 +549,8 @@ try
|
||||
case 'CellStatus_Modify':
|
||||
break;
|
||||
case 'CellStatus_Issue':
|
||||
case 'CellStatus_SearchIssue':
|
||||
case 'CellStatus_NullIssue':
|
||||
case 'CellStatus_Ambiguous':
|
||||
$iCountWarnings++;
|
||||
break;
|
||||
|
||||
@@ -33,7 +33,7 @@ $sMyWsdl = './itop.wsdl.tpl';
|
||||
|
||||
$sRawFile = file_get_contents($sMyWsdl);
|
||||
|
||||
$sServerURI = 'http'.(empty($_SERVER['HTTPS']) ? '' : 's').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/soapserver.php';
|
||||
$sServerURI = 'http'.((isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off')) ? 's' : '').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/soapserver.php';
|
||||
|
||||
$sFinalFile = str_replace(
|
||||
'___SOAP_SERVER_URI___',
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
require_once('itopsoaptypes.class.inc.php');
|
||||
|
||||
$sItopRoot = 'http'.(empty($_SERVER['HTTPS']) ? '' : 's').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/..';
|
||||
$sItopRoot = 'http'.((isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off')) ? 's' : '').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/..';
|
||||
$sWsdlUri = $sItopRoot.'/webservices/itop.wsdl.php';
|
||||
|
||||
ini_set("soap.wsdl_cache_enabled","0");
|
||||
|
||||
@@ -32,7 +32,7 @@ require_once('../application/startup.inc.php');
|
||||
require('./webservices.class.inc.php');
|
||||
|
||||
// this file is generated dynamically with location = here
|
||||
$sWsdlUri = 'http'.(empty($_SERVER['HTTPS']) ? '' : 's').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/../webservices/itop.wsdl.php';
|
||||
$sWsdlUri = 'http'.((isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off')) ? 's' : '').'://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER['SCRIPT_NAME']).'/../webservices/itop.wsdl.php';
|
||||
|
||||
|
||||
ini_set("soap.wsdl_cache_enabled","0");
|
||||
|
||||
@@ -343,7 +343,7 @@ class WebServices
|
||||
switch($oExtObjects->Count())
|
||||
{
|
||||
case 0:
|
||||
$sMsg = "Parameter $sParamName: no match (searched: '".$oReconFilter->ToOQL()."')";
|
||||
$sMsg = "Parameter $sParamName: no match (searched: '".$oReconFilter->ToOQL(true)."')";
|
||||
$oRes->LogIssue($sMsg, $bIsMandatory);
|
||||
break;
|
||||
case 1:
|
||||
@@ -358,7 +358,7 @@ class WebServices
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$sMsg = "Parameter $sParamName: Found ".$oExtObjects->Count()." matches (searched: '".$oReconFilter->ToOQL()."')";
|
||||
$sMsg = "Parameter $sParamName: Found ".$oExtObjects->Count()." matches (searched: '".$oReconFilter->ToOQL(true)."')";
|
||||
$oRes->LogIssue($sMsg, $bIsMandatory);
|
||||
}
|
||||
}
|
||||
@@ -436,7 +436,7 @@ class WebServices
|
||||
switch($oExtObjects->Count())
|
||||
{
|
||||
case 0:
|
||||
$oRes->LogWarning("Parameter $sParamName: object to link $sLinkedClass / $sItemDesc could not be found (searched: '".$oReconFilter->ToOQL()."')");
|
||||
$oRes->LogWarning("Parameter $sParamName: object to link $sLinkedClass / $sItemDesc could not be found (searched: '".$oReconFilter->ToOQL(true)."')");
|
||||
$aItemsNotFound[] = $sItemDesc;
|
||||
break;
|
||||
case 1:
|
||||
@@ -447,7 +447,7 @@ class WebServices
|
||||
);
|
||||
break;
|
||||
default:
|
||||
$oRes->LogWarning("Parameter $sParamName: Found ".$oExtObjects->Count()." matches for item '$sItemDesc' (searched: '".$oReconFilter->ToOQL()."')");
|
||||
$oRes->LogWarning("Parameter $sParamName: Found ".$oExtObjects->Count()." matches for item '$sItemDesc' (searched: '".$oReconFilter->ToOQL(true)."')");
|
||||
$aItemsNotFound[] = $sItemDesc;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user