Merge remote-tracking branch 'origin/support/2.7' into develop

# Conflicts:
#	application/dashboard.class.inc.php
#	core/action.class.inc.php
#	datamodels/2.x/combodo-db-tools/dictionaries/es_cr.dict.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/dictionaries/es_cr.dict.itop-attachments.php
#	datamodels/2.x/itop-config-mgmt/dictionaries/es_cr.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-core-update/dictionaries/es_cr.dict.itop-core-update.php
#	datamodels/2.x/itop-hub-connector/dictionaries/es_cr.dict.itop-hub-connector.php
#	datamodels/2.x/itop-knownerror-mgmt/dictionaries/es_cr.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-portal-base/dictionaries/es_cr.dict.itop-portal-base.php
#	datamodels/2.x/itop-request-mgmt-itil/dictionaries/es_cr.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/dictionaries/es_cr.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-sla-computation/dictionaries/es_cr.dict.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/dictionaries/es_cr.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-tickets/dictionaries/es_cr.dict.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/dictionaries/es_cr.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/es_cr.dict.itop-welcome-itil.php
#	dictionaries/es_cr.dictionary.itop.core.php
#	dictionaries/es_cr.dictionary.itop.ui.php
#	pages/ajax.render.php
#	setup/wizardsteps.class.inc.php
#	synchro/synchro_import.php
This commit is contained in:
Pierre Goiffon
2021-11-19 10:28:46 +01:00
42 changed files with 793 additions and 713 deletions

View File

@@ -860,28 +860,29 @@ class RuntimeDashboard extends Dashboard
{
$bCustomized = false;
if (!appUserPreferences::GetPref('display_original_dashboard_'.$sDashBoardId, false))
{
$sDashboardFileSanitized = utils::RealPath($sDashboardFile, APPROOT);
if (false === $sDashboardFileSanitized) {
throw new SecurityException('Invalid dashboard file !');
}
if (!appUserPreferences::GetPref('display_original_dashboard_'.$sDashBoardId, false)) {
// Search for an eventual user defined dashboard
$oUDSearch = new DBObjectSearch('UserDashboard');
$oUDSearch->AddCondition('user_id', UserRights::GetUserId(), '=');
$oUDSearch->AddCondition('menu_code', $sDashBoardId, '=');
$oUDSet = new DBObjectSet($oUDSearch);
if ($oUDSet->Count() > 0)
{
if ($oUDSet->Count() > 0) {
// Assuming there is at most one couple {user, menu}!
$oUserDashboard = $oUDSet->Fetch();
$sDashboardDefinition = $oUserDashboard->Get('contents');
$bCustomized = true;
}
else
{
$sDashboardDefinition = @file_get_contents($sDashboardFile);
} else {
$sDashboardDefinition = @file_get_contents($sDashboardFileSanitized);
}
}
else
{
$sDashboardDefinition = @file_get_contents($sDashboardFile);
$sDashboardDefinition = @file_get_contents($sDashboardFileSanitized);
}
if ($sDashboardDefinition !== false)
@@ -889,7 +890,7 @@ class RuntimeDashboard extends Dashboard
$oDashboard = new RuntimeDashboard($sDashBoardId);
$oDashboard->FromXml($sDashboardDefinition);
$oDashboard->SetCustomFlag($bCustomized);
$oDashboard->SetDefinitionFile($sDashboardFile);
$oDashboard->SetDefinitionFile($sDashboardFileSanitized);
} else {
$oDashboard = null;
}

View File

@@ -41,29 +41,25 @@ register_shutdown_function(function()
$sReservedMemory = null;
if (!is_null($err = error_get_last()) && ($err['type'] == E_ERROR))
{
// Remove stack trace from MySQLException
// Remove stack trace from MySQLException (since 2.7.2 see N°3174)
$sMessage = $err['message'];
if (strpos($sMessage, 'MySQLException') !== false)
{
if (strpos($sMessage, 'MySQLException') !== false) {
$iStackTracePos = strpos($sMessage, 'Stack trace:');
if ($iStackTracePos !== false)
{
if ($iStackTracePos !== false) {
$sMessage = substr($sMessage, 0, $iStackTracePos);
}
}
IssueLog::error($sMessage, null, $err);
if (strpos($err['message'], 'Allowed memory size of') !== false)
{
// Log additional info but message from $err (since 2.7.6 N°4174)
$aErrToLog = $err;
unset($aErrToLog['message']);
IssueLog::error($sMessage, null, $aErrToLog);
if (strpos($err['message'], 'Allowed memory size of') !== false) {
$sLimit = ini_get('memory_limit');
echo "<p>iTop: Allowed memory size of $sLimit exhausted, contact your administrator to increase 'memory_limit' in php.ini</p>\n";
}
elseif (strpos($err['message'], 'Maximum execution time') !== false)
{
} elseif (strpos($err['message'], 'Maximum execution time') !== false) {
$sLimit = ini_get('max_execution_time');
echo "<p>iTop: Maximum execution time of $sLimit exceeded, contact your administrator to increase 'max_execution_time' in php.ini</p>\n";
}
else
{
} else {
echo "<p>iTop: An error occurred, check server error log for more information.</p>\n";
}
}

View File

@@ -367,8 +367,7 @@ class ActionEmail extends ActionNotification
{
$this->m_iRecipients = 0;
$this->m_aMailErrors = array();
$bRes = false; // until we do succeed in sending the email
// Determine recipients
//
$sTo = $this->FindRecipients('to', $aContextArgs);
@@ -382,29 +381,42 @@ class ActionEmail extends ActionNotification
$sSubject = MetaModel::ApplyParams($this->Get('subject'), $aContextArgs);
$sBody = MetaModel::ApplyParams($this->Get('body'), $aContextArgs);
$oObj = $aContextArgs['this->object()'];
$sMessageId = sprintf('iTop_%s_%d_%f@%s.openitop.org', get_class($oObj), $oObj->GetKey(), microtime(true /* get as float*/), MetaModel::GetEnvironmentId());
$sMessageId = sprintf('iTop_%s_%d_%f@%s.openitop.org', get_class($oObj), $oObj->GetKey(), microtime(true /* get as float*/),
MetaModel::GetEnvironmentId());
$sReference = '<'.$sMessageId.'>';
}
catch(Exception $e)
{
ApplicationContext::SetUrlMakerClass($sPreviousUrlMaker);
throw $e;
}
ApplicationContext::SetUrlMakerClass($sPreviousUrlMaker);
if (!is_null($oLog))
{
catch (Exception $e) {
/** @noinspection PhpUnhandledExceptionInspection */
throw $e;
}
finally {
ApplicationContext::SetUrlMakerClass($sPreviousUrlMaker);
}
if (!is_null($oLog)) {
// Note: we have to secure this because those values are calculated
// inside the try statement, and we would like to keep track of as
// many data as we could while some variables may still be undefined
if (isset($sTo)) $oLog->Set('to', $sTo);
if (isset($sCC)) $oLog->Set('cc', $sCC);
if (isset($sBCC)) $oLog->Set('bcc', $sBCC);
if (isset($sFrom)) $oLog->Set('from', empty($sFromLabel) ? $sFrom : "$sFromLabel <$sFrom>");
if (isset($sSubject)) $oLog->Set('subject', $sSubject);
if (isset($sBody)) $oLog->Set('body', $sBody);
if (isset($sTo)) {
$oLog->Set('to', $sTo);
}
if (isset($sCC)) {
$oLog->Set('cc', $sCC);
}
if (isset($sBCC)) {
$oLog->Set('bcc', $sBCC);
}
if (isset($sFrom)) {
$oLog->Set('from', $sFrom);
}
if (isset($sSubject)) {
$oLog->Set('subject', $sSubject);
}
if (isset($sBody)) {
$oLog->Set('body', $sBody);
}
}
$sStyles = file_get_contents(APPROOT.'css/email.css');
$sStyles .= MetaModel::GetConfig()->Get('email_css');

View File

@@ -7463,9 +7463,11 @@ abstract class MetaModel
* @param string $sInput
* @param array $aParams
*
* @return mixed
* @return string
*
* @throws \Exception
*/
static public function ApplyParams($sInput, $aParams)
public static function ApplyParams($sInput, $aParams)
{
$aParams = static::AddMagicPlaceholders($aParams);
@@ -7475,7 +7477,7 @@ abstract class MetaModel
$aSearches = array();
$aReplacements = array();
foreach($aParams as $sSearch => $replace)
foreach ($aParams as $sSearch => $replace)
{
// Some environment parameters are objects, we just need scalars
if (is_object($replace))

View File

@@ -1,12 +1,15 @@
<?php
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2013 XXXXX
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
* @notas Utilizar codificación UTF-8 para mostrar acentos y otros caracteres especiales
*/
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'CAS:Error:UserNotAllowed' => 'User not allowed~~',
'CAS:Login:SignIn' => 'Sign in with CAS~~',
'CAS:Login:SignInTooltip' => 'Click here to authenticate yourself with the CAS server~~',
'CAS:Error:UserNotAllowed' => 'Usuario no permitido',
'CAS:Login:SignIn' => 'Iniciar sesión con CAS',
'CAS:Login:SignInTooltip' => 'Click para autenticarse con servidor CAS',
));

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
@@ -40,18 +40,18 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:UserLocal/Attribute:password' => 'Contraseña',
'Class:UserLocal/Attribute:password+' => 'Contraseña',
'Class:UserLocal/Attribute:expiration' => 'Password expiration~~',
'Class:UserLocal/Attribute:expiration+' => 'Password expiration status (requires an extension to have an effect)~~',
'Class:UserLocal/Attribute:expiration/Value:can_expire' => 'Can expire~~',
'Class:UserLocal/Attribute:expiration/Value:can_expire+' => '~~',
'Class:UserLocal/Attribute:expiration/Value:never_expire' => 'Never expire~~',
'Class:UserLocal/Attribute:expiration/Value:never_expire+' => '~~',
'Class:UserLocal/Attribute:expiration/Value:force_expire' => 'Expired~~',
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
'Class:UserLocal/Attribute:expiration' => 'Expiración de contraseña',
'Class:UserLocal/Attribute:expiration+' => 'Estatus de expiración de contraseña (requiere de una extensión para que tenga efecto)',
'Class:UserLocal/Attribute:expiration/Value:can_expire' => 'Puede expirar',
'Class:UserLocal/Attribute:expiration/Value:can_expire+' => 'Puede expirar',
'Class:UserLocal/Attribute:expiration/Value:never_expire' => 'Nunca expirar',
'Class:UserLocal/Attribute:expiration/Value:never_expire+' => 'Nunca expirar',
'Class:UserLocal/Attribute:expiration/Value:force_expire' => 'Expirado',
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => 'Expirado',
'Class:UserLocal/Attribute:password_renewed_date' => 'Renovación de contraseña',
'Class:UserLocal/Attribute:password_renewed_date+' => 'Cuando fue el último cambio de contraseña',
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'La contraseña debe ser de al menos 8 caracteres e incluír mayúsculas, minúsculas, números y caracteres especiales.',
'UserLocal:password:expiration' => 'The fields below require an extension~~'
'UserLocal:password:expiration' => 'El siguiente campo requiere una extensión'
));

View File

@@ -1,9 +1,10 @@
<?php
/**
* Localized data
* Spanish localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*
@@ -23,9 +24,9 @@
// Database inconsistencies
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
// Dictionary entries go here
'Menu:DBToolsMenu' => 'Herramientas de bases de datos',
'Menu:DBToolsMenu' => 'Integridad de Base de Datos',
'DBTools:Class' => 'Clase',
'DBTools:Title' => 'Herramientas de mantenimiento de base de datos~~',
'DBTools:Title' => 'Herramientas de Mantenimiento de Base de Datos',
'DBTools:ErrorsFound' => 'Errores encontrados',
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
@@ -39,14 +40,14 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'DBTools:ShowIds' => 'Vista detallada',
'DBTools:ShowReport' => 'Reporte',
'DBTools:IntegrityCheck' => 'Verificación de integridad',
'DBTools:FetchCheck' => 'Fetch Check (long)~~',
'DBTools:FetchCheck' => 'Verificación de búsqueda (larga)',
'DBTools:SelectAnalysisType' => 'Select analysis type~~',
'DBTools:Analyze' => 'Analizar',
'DBTools:Details' => 'Mostrar detalles',
'DBTools:ShowAll' => 'Mostrar todos los errores',
'DBTools:Inconsistencies' => 'Inconsistencias de base de datos',
'DBTools:Inconsistencies' => 'Inconsistencias de Base de Datos',
'DBTools:DetailedErrorTitle' => '%2$s error(s) in class %1$s: %3$s~~',
'DBAnalyzer-Integrity-OrphanRecord' => 'Registro huérfano en `%1$s`, debería tener su contraparte en la tabla `%2$s`',
@@ -54,14 +55,14 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'DBAnalyzer-Integrity-MissingExtKey' => 'Llave externa perdida %1$s (columna: `%2$s.%3$s`)',
'DBAnalyzer-Integrity-InvalidValue' => 'Valor inválido para %1$s (columna: `%2$s.%3$s`)',
'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Algunas cuentas de usuario no tienen perfil asignado',
'DBAnalyzer-Fetch-Count-Error' => 'Fetch count error in `%1$s`, %2$d entries fetched / %3$d counted~~',
'DBAnalyzer-Integrity-FinalClass' => 'Field `%2$s`.`%1$s` must have the same value as `%3$s`.`%1$s`~~',
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contains a valid class~~',
'DBAnalyzer-Fetch-Count-Error' => 'Obtener cuenta de errores en `%1$s`, %2$d entradas recuperadas / %3$d contadas',
'DBAnalyzer-Integrity-FinalClass' => 'Campo `%2$s`.`%1$s` debe tener los mismos valores que `%3$s`.`%1$s`',
'DBAnalyzer-Integrity-RootFinalClass' => 'Campo `%2$s`.`%1$s` debe contener un caracter válido',
));
// Database Info
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'DBTools:DatabaseInfo' => 'Información de base de datos',
'DBTools:DatabaseInfo' => 'Información de Base de Datos',
'DBTools:Base' => 'Base',
'DBTools:Size' => 'Tamaño',
));
@@ -69,17 +70,17 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
// Lost attachments
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'DBTools:LostAttachments' => 'Adjuntos perdidos',
'DBTools:LostAttachments:Disclaimer' => 'Aquí usted puede buscar adjuntos perdidos o desplazados. Esta NO es una herramienta de recuperación de datos, no obtiene datos borrados.',
'DBTools:LostAttachments:Disclaimer' => 'Aquí usted puede buscar anexos perdidos o fuera de lugar. Esta NO es una herramienta de recuperación de datos, no obtiene datos borrados.',
'DBTools:LostAttachments:Button:Analyze' => 'Analizar',
'DBTools:LostAttachments:Button:Restore' => 'Restaurar',
'DBTools:LostAttachments:Button:Restore:Confirm' => 'Esta acción no se puede deshacer, por favor confirme que quiere restaurar los archivos seleccionados.',
'DBTools:LostAttachments:Button:Busy' => 'Por favor espere...',
'DBTools:LostAttachments:Step:Analyze' => 'Primero, buscaremos adjuntos perdidos/desplazados analizando la base de datos.',
'DBTools:LostAttachments:Step:Analyze' => 'Primero, buscar anexos perdidos o fuera de lugar analizando la base de datos.',
'DBTools:LostAttachments:Step:AnalyzeResults' => 'Analizar resultados:',
'DBTools:LostAttachments:Step:AnalyzeResults:None' => 'Genial! Todo parece estar en el lugar correcto.',
'DBTools:LostAttachments:Step:AnalyzeResults:None' => '¡Genial! Todo parece estar en el lugar correcto.',
'DBTools:LostAttachments:Step:AnalyzeResults:Some' => 'Algunos adjuntos (%1$d) parecen estar desplazados. Mire la siguiente lista y verifique los que quiera mover.',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:Filename' => 'Nombre de archivo',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:CurrentLocation' => 'Ubicación actual',

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
@@ -36,12 +36,12 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Attachment:Max_Ko' => '(Tamaño Máximo de Archivo: %1$s Kb)',
'Attachments:NoAttachment' => 'No hay Anexo. ',
'Attachments:PreviewNotAvailable' => 'Vista preliminar no disponible para este tipo de Anexo.',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
'Attachments:Error:UploadedFileEmpty' => 'The received file is empty and cannot be attached.
Either you have pushed an empty file,
or ask your iTop administrator if the iTop server disk is full.~~',
'Attachments:Render:Icons' => 'Display as icons~~',
'Attachments:Render:Table' => 'Display as list~~',
'Attachments:Error:FileTooLarge' => 'El archivo es demasiado grande para ser cargado. %1$s',
'Attachments:Error:UploadedFileEmpty' => 'El archivo recibido está vacío y no puede ser anexado.
Puede ser que haya enviado un archivo vació,
o pregunte al administador de iTop si el servidor que ha quedado sin espacio en disco.',
'Attachments:Render:Icons' => 'Desplegar como icono',
'Attachments:Render:Table' => 'Desplegar como lista',
'UI:Attachments:DropYourFileHint' => 'Drop files anywhere in this area~~',
));
@@ -50,40 +50,40 @@ or ask your iTop administrator if the iTop server disk is full.~~',
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
'Class:Attachment' => 'Anexo',
'Class:Attachment+' => 'Anexo',
'Class:Attachment/Attribute:expire' => 'Expira',
'Class:Attachment/Attribute:expire+' => 'Expira',
'Class:Attachment/Attribute:temp_id' => 'Id Temporal',
'Class:Attachment/Attribute:temp_id+' => 'Id Temporal',
'Class:Attachment/Attribute:item_class' => 'Clase de Elemento',
'Class:Attachment/Attribute:item_class+' => 'Clase de Elemento',
'Class:Attachment/Attribute:item_id' => 'Elemento',
'Class:Attachment/Attribute:item_id+' => 'Elemento',
'Class:Attachment/Attribute:item_org_id' => 'Organización de Elemento',
'Class:Attachment/Attribute:item_org_id+' => 'Organización de Elemento',
'Class:Attachment/Attribute:contents' => 'Contenido',
'Class:Attachment/Attribute:contents+' => 'Contenido',
));
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Attachments:File:Thumbnail' => 'Icon~~',
'Attachments:File:Name' => 'File name~~',
'Attachments:File:Date' => 'Upload date~~',
'Attachments:File:Uploader' => 'Uploaded by~~',
'Attachments:File:Size' => 'Size~~',
'Attachments:File:MimeType' => 'Type~~',
'Attachments:File:Thumbnail' => 'Ícono',
'Attachments:File:Name' => 'Nombre de Archivo',
'Attachments:File:Date' => 'Fecha de Carga',
'Attachments:File:Uploader' => 'Cargado por',
'Attachments:File:Size' => 'Tamaño',
'Attachments:File:MimeType' => 'Tipo',
));
//
// Class: Attachment
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Attachment/Attribute:creation_date' => 'Creation date~~',
'Class:Attachment/Attribute:creation_date+' => '~~',
'Class:Attachment/Attribute:user_id' => 'User id~~',
'Class:Attachment/Attribute:user_id+' => '~~',
'Class:Attachment/Attribute:contact_id' => 'Contact id~~',
'Class:Attachment/Attribute:contact_id+' => '~~',
'Class:Attachment/Attribute:creation_date' => 'Fecha de Creación',
'Class:Attachment/Attribute:creation_date+' => 'Fecha de Creación',
'Class:Attachment/Attribute:user_id' => 'Id del Usuario',
'Class:Attachment/Attribute:user_id+' => 'Id del Usuario',
'Class:Attachment/Attribute:contact_id' => 'Id del Contacto',
'Class:Attachment/Attribute:contact_id+' => 'Id del Contacto',
));

View File

@@ -4,6 +4,7 @@
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*
@@ -42,9 +43,9 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'bkp-table-file' => 'Archivo',
'bkp-table-file+' => 'Solo archivos con la extensión .zip son considerados como archivos de respaldos',
'bkp-table-size' => 'Tamaño',
'bkp-table-size+' => '',
'bkp-table-size+' => 'Tamaño',
'bkp-table-actions' => 'Acciones',
'bkp-table-actions+' => '',
'bkp-table-actions+' => 'Acciones',
'bkp-status-backups-auto' => 'Respaldos Programandos',
'bkp-status-backups-manual' => 'Respaldos Manuales',
'bkp-status-backups-none' => 'No hay respaldos',

View File

@@ -37,8 +37,8 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id+' => 'Ticket',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref' => 'Ref.',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref+' => 'Ref.',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title' => 'Ticket title~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title' => 'Título del Ticket',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title+' => '',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_id' => 'EC',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_id+' => 'Elemanto de Configuración',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_name' => 'Elemanto de Configuración',

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
@@ -1060,8 +1060,8 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Brand+' => 'Marca',
'Class:Brand/Attribute:physicaldevices_list' => 'Dispositivo Físico',
'Class:Brand/Attribute:physicaldevices_list+' => 'Dispositivo Físico',
'Class:Brand/UniquenessRule:name+' => 'The name must be unique~~',
'Class:Brand/UniquenessRule:name' => 'This brand already exists~~',
'Class:Brand/UniquenessRule:name+' => 'El nombre debe ser único',
'Class:Brand/UniquenessRule:name' => 'Esta Marca ya existe',
));
//
@@ -1115,8 +1115,8 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Model/Attribute:type/Value:Phone+' => 'Teléfono',
'Class:Model/Attribute:physicaldevices_list' => 'Dispositivo Físico',
'Class:Model/Attribute:physicaldevices_list+' => 'Dispositivo Físico',
'Class:Model/UniquenessRule:name_brand+' => 'Name must be unique in the brand~~',
'Class:Model/UniquenessRule:name_brand' => 'this model already exists for this brand~~',
'Class:Model/UniquenessRule:name_brand+' => 'El nombre debe ser único dentro de la Marca',
'Class:Model/UniquenessRule:name_brand' => 'este modelo ya existe para esta Marca',
));
//
@@ -1220,8 +1220,8 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Subnet+' => 'SubRed',
'Class:Subnet/Attribute:description' => 'Descripción',
'Class:Subnet/Attribute:description+' => 'Descripción',
'Class:Subnet/Attribute:subnet_name' => 'Subnet name~~',
'Class:Subnet/Attribute:subnet_name+' => '~~',
'Class:Subnet/Attribute:subnet_name' => 'Nombre de Subred',
'Class:Subnet/Attribute:subnet_name+' => 'Nombre de Subred',
'Class:Subnet/Attribute:org_id' => 'Organización',
'Class:Subnet/Attribute:org_id+' => 'Organización',
'Class:Subnet/Attribute:org_name' => 'Organización',
@@ -1574,8 +1574,8 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Menu:ConfigManagement:Misc' => 'Misceláneo',
'Menu:Group' => 'Grupos de ECs',
'Menu:Group+' => 'Grupos de ECs',
'Menu:OSVersion' => 'OS versions~~',
'Menu:OSVersion+' => '~~',
'Menu:OSVersion' => 'Versión de Sistema Operativo',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Catálogo de Software',
'Menu:Software+' => 'Catálogo de Software',
));

View File

@@ -4,6 +4,7 @@
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*
@@ -34,5 +35,5 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'config-reverted' => 'La configuración ha sido revertida.',
'config-parse-error' => 'Línea %2$d: %1$s.<br/>El archivo NO ha sido actualizado.',
'config-current-line' => 'Editando línea: %1$s',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.~~',
'config-saved-warning-db-password' => 'Registrado correctamente, pero el respaldo NO funcionará debido a caracteres no admitidos en la contraseña de la base de datos.',
));

View File

@@ -4,6 +4,7 @@
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*
@@ -22,13 +23,13 @@
*/
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'iTopUpdate:UI:PageTitle' => 'Actualización de aplicación',
'itop-core-update:UI:SelectUpdateFile' => 'Application Upgrade~~',
'itop-core-update:UI:ConfirmUpdate' => 'Application Upgrade~~',
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrade~~',
'itop-core-update:UI:SelectUpdateFile' => 'Seleccionar archivo',
'itop-core-update:UI:ConfirmUpdate' => 'Confirmar actualización',
'itop-core-update:UI:UpdateCoreFiles' => 'Actualizar aplicación',
'iTopUpdate:UI:MaintenanceModeActive' => 'La aplicación está actualmente en mantenimiento, ningún usuario puede acceder. UStede debe ejecutar la instalación o restaturar la aplicación para regresar al modo normal.',
'itop-core-update:UI:UpdateDone' => 'Application Upgrade~~',
'itop-core-update:UI:UpdateDone' => 'Actualización realizada',
'itop-core-update/Operation:SelectUpdateFile/Title' => 'Application Upgrade~~',
'itop-core-update/Operation:SelectUpdateFile/Title' => 'Seleccionar archivo',
'itop-core-update/Operation:ConfirmUpdate/Title' => 'Confirmar actualización de la aplicación',
'itop-core-update/Operation:UpdateCoreFiles/Title' => 'Actualizando aplicación',
'itop-core-update/Operation:UpdateDone/Title' => 'Actualización de aplicación terminada',
@@ -63,18 +64,18 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'iTopUpdate:UI:DiskFreeSpace' => 'Espaciolibre en el dispositivo',
'iTopUpdate:UI:ItopDiskSpace' => 'Espacio en diso de '.ITOP_APPLICATION_SHORT,
'iTopUpdate:UI:DBDiskSpace' => 'Espacio en diso de base de datos',
'iTopUpdate:UI:FileUploadMaxSize' => 'Máximo tamaño de subida de archivos',
'iTopUpdate:UI:FileUploadMaxSize' => 'Máximo tamaño de carga de archivos',
'iTopUpdate:UI:PostMaxSize' => 'Valor post_max_size en PHP ini: %1$s~~',
'iTopUpdate:UI:UploadMaxFileSize' => 'Valor upload_max_filesize en PHP ini: %1$s~~',
'iTopUpdate:UI:PostMaxSize' => 'Valor post_max_size en PHP ini: %1$s',
'iTopUpdate:UI:UploadMaxFileSize' => 'Valor upload_max_filesize en PHP ini: %1$s',
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Revisando sistema de archivos',
'iTopUpdate:UI:CanCoreUpdate:Error' => 'La revisión del sistema de archivos falló (%1$s)',
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'La revisión del sistema de archivos falló (Archivo no existe %1$s)~~',
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'La revisión del sistema de archivos falló (Archivo no existe %1$s)',
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'La revisión del sistema de archivos falló',
'iTopUpdate:UI:CanCoreUpdate:Yes' => 'La aplicación puede ser actualizada',
'iTopUpdate:UI:CanCoreUpdate:No' => 'La aplicación no puede ser actualizada: %1$s',
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~',
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Advertencia: la actualización de la aplicación puede fallar: %1$s',
'iTopUpdate:UI:CannotUpdateUseSetup' => 'You must use the <a href="%1$s">setup</a> to update the application.<br />Some modified files were detected, a partial update cannot be executed.~~',
// Setup Messages
@@ -91,12 +92,12 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
// Errors
'iTopUpdate:Error:MissingFunction' => 'Imposible comenzar actualización, función no disponible',
'iTopUpdate:Error:MissingFile' => 'Archivo no encontrado: %1$s~~',
'iTopUpdate:Error:MissingFile' => 'Archivo no encontrado: %1$s',
'iTopUpdate:Error:CorruptedFile' => 'El archivo %1$s está corrupto',
'iTopUpdate:Error:BadFileFormat' => 'El archivo de actualización no es un archivo zip',
'iTopUpdate:Error:BadFileContent' => 'El archivo de actualización no es correcto',
'iTopUpdate:Error:BadItopProduct' => 'El archivo de actualización no es compatible con su producto',
'iTopUpdate:Error:Copy' => 'Error, no puedo copiar \'%1$s\' a \'%2$s\'~~',
'iTopUpdate:Error:Copy' => 'Error, no puedo copiar \'%1$s\' a \'%2$s\'',
'iTopUpdate:Error:FileNotFound' => 'Archivo no encontrado',
'iTopUpdate:Error:NoFile' => 'Archivo no seleccionado',
'iTopUpdate:Error:InvalidToken' => 'Token inválido',
@@ -105,7 +106,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'iTopUpdate:UI:RestoreArchive' => 'Usted puede restaurar su aplicación desde el archivo \'%1$s\'',
'iTopUpdate:UI:RestoreBackup' => 'Usted puede restaurar la base de datos desde \'%1$s\'',
'iTopUpdate:UI:UpdateDone' => 'Actualización exitosa',
'iTopUpdate:UI:UpdateDone' => 'Actualización éxitosa',
'Menu:iTopUpdate' => 'Actualización de aplicación',
'Menu:iTopUpdate+' => 'Actualización de aplicación',
@@ -113,7 +114,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:ModuleInstallation/Attribute:installed' => 'Instalado en',
'Class:ModuleInstallation/Attribute:name' => 'Nombre',
'Class:ModuleInstallation/Attribute:version' => 'Versión',
'Class:ModuleInstallation/Attribute:comment' => 'Commentario',
'Class:ModuleInstallation/Attribute:comment' => 'Comentario',
));

View File

@@ -4,6 +4,7 @@
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*

View File

@@ -4,6 +4,7 @@
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*

View File

@@ -47,6 +47,9 @@
//
// Class: FAQ
//
//
// Class: FAQ
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:FAQ' => 'Preguntas y Respuestas Frecuentes',
'Class:FAQ+' => 'Preguntas y Respuestas Frecuentes',
@@ -64,13 +67,12 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:FAQ/Attribute:error_code+' => 'Código de Error',
'Class:FAQ/Attribute:key_words' => 'Palabras Clave',
'Class:FAQ/Attribute:key_words+' => 'Palabras Clave',
'Class:FAQ/Attribute:domains' => 'Domains~~',
'Class:FAQ/Attribute:domains' => 'Ámbito',
));
//
// Class: FAQCategory
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:FAQCategory' => 'Categoría de Preguntas y Respuesta Frecuentes',
'Class:FAQCategory+' => 'Categoría de Preguntas y Respuesta Frecuentes',

View File

@@ -4,6 +4,7 @@
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*
@@ -22,9 +23,9 @@
*/
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
// Errors
'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~',
'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~',
'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~',
'FilesInformation:Error:MissingFile' => 'Archivo faltante: %1$s',
'FilesInformation:Error:CorruptedFile' => 'El archivo %1$s está corrupto',
'FilesInformation:Error:CantWriteToFile' => 'No se puede escribir al archivo %1$s',
));

View File

@@ -4,6 +4,7 @@
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*
@@ -47,7 +48,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'iTopHub:Landing:Install' => 'Instalando extensiones...',
'iTopHub:CompiledOK' => 'Compilación éxitosa.',
'iTopHub:ConfigurationSafelyReverted' => 'Error detectado durante la instalación!<br/>La configuración de '.ITOP_APPLICATION_SHORT.' NO fue modificada.',
'iTopHub:FailAuthent' => 'Authentication failed for this action.~~',
'iTopHub:FailAuthent' => 'Autenticación fallida para esta acciónn.',
'iTopHub:InstalledExtensions' => 'Extensiones instaladas en esta instancia',
'iTopHub:ExtensionCategory:Manual' => 'Extensiones instaladas manualmente',
@@ -76,11 +77,11 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'iTopHub:InstallationProgress:ExtensionsInstallation' => 'Instalación de extensiones',
'iTopHub:InstallationEffect:MissingDependencies' => 'Esta extensión no puede ser instalad porque no cumple con las dependencias.',
'iTopHub:InstallationEffect:MissingDependencies_Details' => 'La extensión require el/los módulo(s): %1$s',
'iTopHub:InstallationProgress:InstallationSuccessful' => 'Instalación éxitosa!',
'iTopHub:InstallationProgress:InstallationSuccessful' => '¡Instalación éxitosa!',
'iTopHub:InstallationStatus:Installed_Version' => '%1$s version: %2$s.',
'iTopHub:InstallationStatus:Installed_Version' => '%1$s versión: %2$s.',
'iTopHub:InstallationStatus:Installed' => 'Instalada',
'iTopHub:InstallationStatus:Version_NotInstalled' => 'Version %1$s <b>NO</b> está instalada.',
'iTopHub:InstallationStatus:Version_NotInstalled' => 'Versión %1$s <b>NO</b> está instalada.',
));

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
@@ -192,8 +192,8 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Incident/Attribute:parent_change_ref+' => 'Ref. Cambio Padre',
'Class:Incident/Attribute:parent_problem_id' => 'Problema Padre',
'Class:Incident/Attribute:parent_problem_id+' => 'Problema Padre',
'Class:Incident/Attribute:parent_problem_ref' => 'Parent problem ref~~',
'Class:Incident/Attribute:parent_problem_ref+' => '~~',
'Class:Incident/Attribute:parent_problem_ref' => 'Ref. Problema Padre',
'Class:Incident/Attribute:parent_problem_ref+' => '',
'Class:Incident/Attribute:related_request_list' => 'Requerimientos Relacionados',
'Class:Incident/Attribute:related_request_list+' => 'Requerimientos Relacionados',
'Class:Incident/Attribute:child_incidents_list' => 'Incidentes Hijos',

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0

View File

@@ -1,6 +1,10 @@
<?php
/**
* Copyright (C) 2013-2021 Combodo SARL
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*
@@ -33,7 +37,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Portal:Button:Delete' => 'Borrar',
'Portal:EnvironmentBanner:Title' => 'Se encuentra en modo <strong>%1$s</strong>',
'Portal:EnvironmentBanner:GoToProduction' => 'Regresar a modo PRODUCTION',
'Error:HTTP:400' => 'Bad request~~',
'Error:HTTP:400' => 'Solicitud Incorrecta',
'Error:HTTP:401' => 'Autenticación',
'Error:HTTP:404' => 'Página no encontrada',
'Error:HTTP:500' => '¡Vaya! Ha ocurrido un error.',
@@ -59,14 +63,14 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Portal:Attachments:DropZone:Message' => 'Agrega tus archivos para agregarlos como documentos adjuntos',
'Portal:File:None' => 'No hay archivo',
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Abierto</a> / <a href="%4$s" class="file_download_link">Download</a>',
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Abierto</a> / <a href="%4$s" class="file_download_link">Descarga</a>',
'Portal:Calendar-FirstDayOfWeek' => 'es', //work with moment.js locales
));
// Object form
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Close this entry~~',
'Portal:Form:Close:Warning' => 'Do you want to leave this form ? Data entered may be lost~~',
'Portal:Form:Close:Warning' => '¿Desea abandorar esta forma? Datos modificados se perderan',
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting again this form.~~',
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting again this form.~~',
));
@@ -132,12 +136,12 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Brick:Portal:Object:Form:View:Title' => '%1$s : %2$s',
'Brick:Portal:Object:Form:Stimulus:Title' => 'Por favor, proporcione la siguiente información:',
'Brick:Portal:Object:Form:Message:Saved' => 'Guardado',
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s guardado~~',
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s guardado',
'Brick:Portal:Object:Search:Regular:Title' => 'Selección %1$s (%2$s)',
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Selección %1$s (%2$s)',
'Brick:Portal:Object:Copy:TextToCopy' => '%1$s: %2$s~~',
'Brick:Portal:Object:Copy:Tooltip' => 'Copy object link~~',
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~'
'Brick:Portal:Object:Copy:TextToCopy' => '%1$s: %2$s',
'Brick:Portal:Object:Copy:Tooltip' => 'Copiar liga al objeto',
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copiado'
));
// CreateBrick brick

View File

@@ -58,11 +58,17 @@ class ExceptionListener implements ContainerAwareInterface
$oException = $oEvent->getException();
// Prepare / format exception data
$sErrorMessage = $oException->getMessage();
if ($oException instanceof \MySQLException) {
// Those exceptions should be caught before (in the metamodel startup, before event starting Symfony !)
// They could contain far too much info :/
// So as an extra precaution we are filtering here anyway !
$sErrorMessage = 'DB Server error, check error log !';
} else {
$sErrorMessage = $oException->getMessage();
}
// - For none HTTP exception, status code will be a generic 500
$iStatusCode = ($oException instanceof HttpExceptionInterface) ? $oException->getStatusCode() : Response::HTTP_INTERNAL_SERVER_ERROR;
switch ($iStatusCode)
{
switch ($iStatusCode) {
case 404:
$sErrorTitle = Dict::S('Error:HTTP:404');
break;
@@ -93,10 +99,10 @@ class ExceptionListener implements ContainerAwareInterface
// Prepare data for template
$aData = array(
'exception' => $oFlattenException,
'code' => $iStatusCode,
'error_title' => $sErrorTitle,
'error_message' => '',
'exception' => $oFlattenException,
'code' => $iStatusCode,
'error_title' => $sErrorTitle,
'error_message' => $sErrorMessage,
);
// Generate the response

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0

View File

@@ -2,9 +2,7 @@
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/*
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*/
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Menu:RequestManagement' => 'Administración de Requerimientos',
@@ -200,8 +198,8 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:UserRequest/Attribute:parent_change_id+' => 'Cambio Padre',
'Class:UserRequest/Attribute:parent_change_ref' => 'Ref. Cambio',
'Class:UserRequest/Attribute:parent_change_ref+' => 'Ref. Cambio',
'Class:UserRequest/Attribute:parent_incident_ref' => 'Parent incident ref~~',
'Class:UserRequest/Attribute:parent_incident_ref+' => '~~',
'Class:UserRequest/Attribute:parent_incident_ref' => 'Ref. Inciente Padre',
'Class:UserRequest/Attribute:parent_incident_ref+' => '',
'Class:UserRequest/Attribute:related_request_list' => 'Requerimientos Hijo',
'Class:UserRequest/Attribute:related_request_list+' => 'Requerimientos Hijo',
'Class:UserRequest/Attribute:public_log' => 'Bitácora Pública',
@@ -252,7 +250,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Organization:Overview:UserRequests' => 'User Requests from this organization~~',
'Organization:Overview:MyUserRequests' => 'My User Requests for this organization~~',
'Organization:Overview:Tickets' => 'Tickets for this organization~~',
'Organization:Overview:UserRequests' => 'Requerimientos para esta Organización',
'Organization:Overview:MyUserRequests' => 'Mis Requerimientos para esta Organización',
'Organization:Overview:Tickets' => 'Tickets para esta Organización',
));

View File

@@ -2,9 +2,7 @@
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/*
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*/
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Menu:RequestManagement' => 'Administración de Requerimientos',
@@ -265,7 +263,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Portal:UserRequest:MoreInfo' => 'Más Información',
'Portal:Details-Service-Element' => 'Elementos del Servicio',
'Portal:NoClosedTicket' => 'Requerimiento No Cerrado',
'Portal:NoService' => '',
'Portal:NoService' => 'Requerimiento Sin Servicio',
'Portal:ListOpenProblems' => 'Problemas Abiertos',
'Portal:ShowProblem' => 'Problemas',
'Portal:ShowFaqs' => 'Preguntas Frecuentes',
@@ -280,7 +278,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Organization:Overview:UserRequests' => 'User Requests from this organization~~',
'Organization:Overview:MyUserRequests' => 'My User Requests for this organization~~',
'Organization:Overview:Tickets' => 'Tickets for this organization~~',
'Organization:Overview:UserRequests' => 'Requerimientos para esta Organización',
'Organization:Overview:MyUserRequests' => 'Mis Requerimientos para esta Organización',
'Organization:Overview:Tickets' => 'Tickets para esta Organización',
));

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
@@ -123,7 +123,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Contract/Attribute:cost_currency/Value:dollars' => 'Dólares',
'Class:Contract/Attribute:cost_currency/Value:dollars+' => 'Dólares de E.U.A',
'Class:Contract/Attribute:cost_currency/Value:euros' => 'Euros',
'Class:Contract/Attribute:cost_currency/Value:euros+' => '~~',
'Class:Contract/Attribute:cost_currency/Value:euros+' => '',
'Class:Contract/Attribute:contracttype_id' => 'Tipo de Contrato',
'Class:Contract/Attribute:contracttype_id+' => 'Tipo de Contrato',
'Class:Contract/Attribute:contracttype_name' => 'Tipo de Contrato',
@@ -369,7 +369,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:SLA/Attribute:slts_list+' => 'Objetivos de Nivel de Servicio',
'Class:SLA/Attribute:customercontracts_list' => 'Acuerdos con Clientes',
'Class:SLA/Attribute:customercontracts_list+' => 'Acuerdos con Clientes',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Could not save link with Customer contract %1$s and service %2$s : SLA already exists~~',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'No se puede guardar la relación entre Acuerdo con Cliente %1$s y Servicio %2$s : El SLA ya existe',
));
//
@@ -428,15 +428,15 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:lnkSLAToSLT/Attribute:slt_id+' => 'SLT',
'Class:lnkSLAToSLT/Attribute:slt_name' => 'SLT',
'Class:lnkSLAToSLT/Attribute:slt_name+' => 'SLT',
'Class:lnkSLAToSLT/Attribute:slt_metric' => 'Slt metric~~',
'Class:lnkSLAToSLT/Attribute:slt_metric' => 'Métrica de SLT',
'Class:lnkSLAToSLT/Attribute:slt_metric+' => '',
'Class:lnkSLAToSLT/Attribute:slt_request_type' => 'Slt request type~~',
'Class:lnkSLAToSLT/Attribute:slt_request_type' => 'Tipo de Requerimiento de SLT',
'Class:lnkSLAToSLT/Attribute:slt_request_type+' => '',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority' => 'Slt ticket priority~~',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority' => 'SLT prioridad de ticket',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority+' => '',
'Class:lnkSLAToSLT/Attribute:slt_value' => 'Slt value~~',
'Class:lnkSLAToSLT/Attribute:slt_value' => 'Valor de SLT',
'Class:lnkSLAToSLT/Attribute:slt_value+' => '',
'Class:lnkSLAToSLT/Attribute:slt_value_unit' => 'Slt value unit~~',
'Class:lnkSLAToSLT/Attribute:slt_value_unit' => 'Unidad de valor de SLT',
'Class:lnkSLAToSLT/Attribute:slt_value_unit+' => '',
));

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
@@ -341,7 +341,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:SLA/Attribute:slts_list+' => 'Objetivos de Nivel de Servicio',
'Class:SLA/Attribute:customercontracts_list' => 'Acuerdos con Clientes',
'Class:SLA/Attribute:customercontracts_list+' => 'Acuerdos con Clientes',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Could not save link with Customer contract %1$s and service %2$s : SLA already exists~~',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'No se puede guardar relación de Acuerco con Cliente %1$s con Servicio %2$s : El SLA ya existe',
));
//
@@ -402,7 +402,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:lnkSLAToSLT/Attribute:slt_name+' => 'SLT',
'Class:lnkSLAToSLT/Attribute:slt_metric' => 'Métrica',
'Class:lnkSLAToSLT/Attribute:slt_metric+' => '',
'Class:lnkSLAToSLT/Attribute:slt_request_type' => 'Tipo de reporte',
'Class:lnkSLAToSLT/Attribute:slt_request_type' => 'Tipo de Requerimiento',
'Class:lnkSLAToSLT/Attribute:slt_request_type+' => '',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority' => 'Prioridad',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority+' => '',

View File

@@ -2,8 +2,9 @@
/**
* Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*

View File

@@ -2,8 +2,9 @@
/**
* Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*

View File

@@ -55,16 +55,15 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Organization/Attribute:deliverymodel_name+' => 'Nombre del Modelo de Entrega',
'Class:Organization/Attribute:parent_id_friendlyname' => 'Organización Padre',
'Class:Organization/Attribute:parent_id_friendlyname+' => 'Organización Padre',
'Class:Organization/Attribute:overview' => 'Overview~~',
'Organization:Overview:FunctionalCIs' => 'Configuration items of this organization~~',
'Organization:Overview:FunctionalCIs:subtitle' => 'by type~~',
'Organization:Overview:Users' => ITOP_APPLICATION_SHORT.' Users within this organization~~',
'Class:Organization/Attribute:overview' => 'Resumen',
'Organization:Overview:FunctionalCIs' => 'Elementos de configuración en esta Organización',
'Organization:Overview:FunctionalCIs:subtitle' => 'por tipo',
'Organization:Overview:Users' => 'Usuarios de iTop en la Organización',
));
//
// Class: Location
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Location' => 'Localidad',
'Class:Location+' => 'Cualquier Tipo de Localidad: Región, País, Ciudad, Sitio, Edificio, Piso, Cuarto, Rack,...',
@@ -97,7 +96,6 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
//
// Class: Contact
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Contact' => 'Contacto',
'Class:Contact+' => 'Contacto',
@@ -134,7 +132,6 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
//
// Class: Person
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Person' => 'Persona',
'Class:Person+' => 'Persona',
@@ -162,16 +159,15 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Person/Attribute:manager_id_friendlyname+' => 'Nombre del Jefe',
'Class:Person/Attribute:picture' => 'Fotografía',
'Class:Person/Attribute:picture+' => 'Fotografía',
'Class:Person/UniquenessRule:employee_number+' => 'The employee number must be unique in the organization~~',
'Class:Person/UniquenessRule:employee_number' => 'there is already a person in \'$this->org_name$\' organization with the same employee number~~',
'Class:Person/UniquenessRule:name+' => 'The employee name should be unique inside its organization~~',
'Class:Person/UniquenessRule:name' => 'There is already a person in \'$this->org_name$\' organization with the same name~~',
'Class:Person/UniquenessRule:employee_number+' => 'El número de empleado debe ser único en la Organización',
'Class:Person/UniquenessRule:employee_number' => 'Ya existe una persona en la organiación \'$this->org_name$\', con el mismo número de empleado',
'Class:Person/UniquenessRule:name+' => 'El nombre del empleado debe ser único dentro de su Organización',
'Class:Person/UniquenessRule:name' => 'Ya existe una persona en la organiación \'$this->org_name$\', con el mismo nombre',
));
//
// Class: Team
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Team' => 'Grupo de Trabajo',
'Class:Team+' => 'Grupo de Trabajo',
@@ -184,7 +180,6 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
//
// Class: Document
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Document' => 'Documento',
'Class:Document+' => 'Documento',
@@ -219,10 +214,9 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
//
// Class: DocumentFile
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:DocumentFile' => 'Documento de Archivo',
'Class:DocumentFile+' => '~~',
'Class:DocumentFile+' => '',
'Class:DocumentFile/Attribute:file' => 'Archivo',
'Class:DocumentFile/Attribute:file+' => 'Archivo',
));
@@ -230,7 +224,6 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
//
// Class: DocumentNote
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:DocumentNote' => 'Nota',
'Class:DocumentNote+' => 'Nota',
@@ -241,7 +234,6 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
//
// Class: DocumentWeb
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:DocumentWeb' => 'Documento Web',
'Class:DocumentWeb+' => 'Documento disponible en otro servidor Web',

View File

@@ -15,8 +15,8 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
/**
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
@@ -180,17 +180,17 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:cmdbAbstractObject/Method:SetCurrentUser' => 'Asignar Usuario actual',
'Class:cmdbAbstractObject/Method:SetCurrentUser+' => 'Asignar Usuario actual',
'Class:cmdbAbstractObject/Method:SetCurrentUser/Param:1' => 'Campo Destino',
'Class:cmdbAbstractObject/Method:SetCurrentUser/Param:1+' => 'If the field is a string then the friendly name will be used, otherwise the identifier will be used. That friendly name is the name of the person if any is attached to the user, otherwise it is the login.',
'Class:cmdbAbstractObject/Method:SetCurrentUser/Param:1+' => 'Si el campo es una cadena de caracteres, entonces el nombre completo será usado, de otra manera el identificador será usado. El nombre completo es el nombre de una persona que está ligado a un usurio, si no será su clave de acceso.',
'Class:cmdbAbstractObject/Method:SetCurrentPerson' => 'Asignar Persona actual',
'Class:cmdbAbstractObject/Method:SetCurrentPerson+' => 'Asignar Persona actual',
'Class:cmdbAbstractObject/Method:SetCurrentPerson/Param:1' => 'Campo Destino',
'Class:cmdbAbstractObject/Method:SetCurrentPerson/Param:1+' => 'If the field is a string then the friendly name will be used, otherwise the identifier will be used.',
'Class:cmdbAbstractObject/Method:SetCurrentPerson/Param:1+' => 'Si el campo es una cadena de caracteres, entonces el nombre completo será usado, de otra manera el identificador será usado.',
'Class:cmdbAbstractObject/Method:SetElapsedTime' => 'Asignar tiempo transcurrido',
'Class:cmdbAbstractObject/Method:SetElapsedTime+' => 'Asignar tiempo transcurrido (segundos)',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:1' => 'Campo Destino',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:1+' => 'The field to set, in the current object',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:1+' => 'El campo a configurar, en el objeto actual',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:2' => 'Campo de Referencia',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:2+' => 'The field from which to get the reference date',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:2+' => 'El campo desde el que se obtienen los datos referenciados',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:3' => 'Horas Trabajadas',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:3+' => 'Dejar vacio para utilizar el horario de trabajo estandar, o dejar por omisión para usar esquema 7x24',
'Class:cmdbAbstractObject/Method:Reset' => 'Restablecer',
@@ -204,9 +204,9 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:cmdbAbstractObject/Method:Copy/Param:2' => 'Campo Origen',
'Class:cmdbAbstractObject/Method:Copy/Param:2+' => 'Campo de donde se obtendrá valor',
'Class:cmdbAbstractObject/Method:ApplyStimulus' => 'Aplicar Stimulus',
'Class:cmdbAbstractObject/Method:ApplyStimulus+' => 'Apply the specified stimulus to the current object',
'Class:cmdbAbstractObject/Method:ApplyStimulus+' => 'Aplicar stimulus específico a objeto actual',
'Class:cmdbAbstractObject/Method:ApplyStimulus/Param:1' => 'Código Stimulus',
'Class:cmdbAbstractObject/Method:ApplyStimulus/Param:1+' => 'A valid stimulus code for the current class',
'Class:cmdbAbstractObject/Method:ApplyStimulus/Param:1+' => 'Un código de stimulus válido para la clase actual',
'Class:ResponseTicketTTO/Interface:iMetricComputer' => 'Tiempo a Pertenencia',
'Class:ResponseTicketTTO/Interface:iMetricComputer+' => 'Objetivo basado en SLT de tipo TTO',
'Class:ResponseTicketTTR/Interface:iMetricComputer' => 'Tiempo a Resolución',

View File

@@ -2,8 +2,9 @@
/**
* Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*
* This file is part of iTop.
*

View File

@@ -16,69 +16,70 @@
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*/
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Core:DeletedObjectLabel' => '%1s (eliminado)',
'Core:DeletedObjectTip' => 'Elemento ha sido Eliminado en %1$s (%2$s)',
'Core:DeletedObjectTip' => 'Elemento ha sido Eliminado en %1$s (%2$s)',
'Core:UnknownObjectLabel' => 'Elemento No Encontrado (Clase: %1$s, Identificador: %2$d)',
'Core:UnknownObjectTip' => 'El Elemento no pudo ser encontrado. Pudo haber sido eliminado hace tiempo y purgado de la Bitácora.',
'Core:UniquenessDefaultError' => 'Regla de unicidad \'%1$s\' en error',
'Core:AttributeLinkedSet' => 'Arreglo de objetos',
'Core:AttributeLinkedSet' => 'Arreglo de objetos',
'Core:AttributeLinkedSet+' => 'Cualquier tipo de objetos [subclass] de la misma clase',
'Core:AttributeLinkedSetDuplicatesFound' => 'Duplicates in the \'%1$s\' field : %2$s~~',
'Core:AttributeDashboard' => 'Panel de Control',
'Core:AttributeDashboard' => 'Panel de Control',
'Core:AttributeDashboard+' => 'Panel de control y supervisión',
'Core:AttributePhoneNumber' => 'Número telefónico',
'Core:AttributePhoneNumber+' => '~~',
'Core:AttributePhoneNumber' => 'Número telefónico',
'Core:AttributePhoneNumber+' => '',
'Core:AttributeObsolescenceDate' => 'Fecha de Obsolescencia',
'Core:AttributeObsolescenceDate+' => '~~',
'Core:AttributeObsolescenceDate' => 'Fecha de Obsolescencia',
'Core:AttributeObsolescenceDate+' => '',
'Core:AttributeTagSet' => 'Lista de etiquetas',
'Core:AttributeTagSet+' => '~~',
'Core:AttributeSet:placeholder' => 'click to add~~',
'Core:AttributeClassAttCodeSet:ItemLabel:AttributeFromClass' => '%1$s (%2$s)~~',
'Core:AttributeClassAttCodeSet:ItemLabel:AttributeFromOneChildClass' => '%1$s (%2$s from %3$s)~~',
'Core:AttributeClassAttCodeSet:ItemLabel:AttributeFromSeveralChildClasses' => '%1$s (%2$s from child classes)~~',
'Core:AttributeTagSet' => 'Lista de etiquetas',
'Core:AttributeTagSet+' => '',
'Core:AttributeSet:placeholder' => 'Click to agregar',
'Core:AttributeClassAttCodeSet:ItemLabel:AttributeFromClass' => '%1$s (%2$s)',
'Core:AttributeClassAttCodeSet:ItemLabel:AttributeFromOneChildClass' => '%1$s (%2$s de %3$s)',
'Core:AttributeClassAttCodeSet:ItemLabel:AttributeFromSeveralChildClasses' => '%1$s (%2$s de clases hijas)',
'Core:AttributeCaseLog' => 'Bitácora',
'Core:AttributeCaseLog+' => '~~',
'Core:AttributeCaseLog' => 'Bitácora',
'Core:AttributeCaseLog+' => '',
'Core:AttributeMetaEnum' => 'Computed enum~~',
'Core:AttributeMetaEnum+' => '~~',
'Core:AttributeMetaEnum' => 'Enumeración Calculada',
'Core:AttributeMetaEnum+' => '',
'Core:AttributeLinkedSetIndirect' => 'Arreglo de objetos (N-N)',
'Core:AttributeLinkedSetIndirect' => 'Arreglo de objetos (N-N)',
'Core:AttributeLinkedSetIndirect+' => 'Cualquier tipo de objetos [subclass] de la misma clase',
'Core:AttributeInteger' => 'Entero',
'Core:AttributeInteger' => 'Entero',
'Core:AttributeInteger+' => 'Valor numérico (puede ser negativo)',
'Core:AttributeDecimal' => 'Decimal',
'Core:AttributeDecimal' => 'Decimal',
'Core:AttributeDecimal+' => 'Valor decimal (puede ser negativo)',
'Core:AttributeBoolean' => 'Booleano',
'Core:AttributeBoolean+' => 'Booleano',
'Core:AttributeBoolean/Value:null' => '',
'Core:AttributeBoolean/Value:yes' => 'Si',
'Core:AttributeBoolean/Value:no' => 'No',
'Core:AttributeBoolean' => 'Booleano',
'Core:AttributeBoolean+' => 'Booleano',
'Core:AttributeBoolean/Value:null' => 'Nulo',
'Core:AttributeBoolean/Value:yes' => 'Si',
'Core:AttributeBoolean/Value:no' => 'No',
'Core:AttributeArchiveFlag' => 'Bandera de Archivado',
'Core:AttributeArchiveFlag/Value:yes' => 'Si',
'Core:AttributeArchiveFlag' => 'Bandera de Archivado',
'Core:AttributeArchiveFlag/Value:yes' => 'Si',
'Core:AttributeArchiveFlag/Value:yes+' => 'Este objeto es solo visible en modo Archivado',
'Core:AttributeArchiveFlag/Value:no' => 'No',
'Core:AttributeArchiveFlag/Label' => 'Archivado',
'Core:AttributeArchiveFlag/Label+' => '',
'Core:AttributeArchiveDate/Label' => 'Fecha de Archivado',
'Core:AttributeArchiveFlag/Value:no' => 'No',
'Core:AttributeArchiveFlag/Label' => 'Archivado',
'Core:AttributeArchiveFlag/Label+' => '',
'Core:AttributeArchiveDate/Label' => 'Fecha de Archivado',
'Core:AttributeArchiveDate/Label+' => '',
'Core:AttributeObsolescenceFlag' => 'Bandera de Obsolescencia',
@@ -194,24 +195,24 @@ Operadores:<br/>
'Core:AttributeTable' => 'Tabla',
'Core:AttributeTable+' => 'Arreglo indexado con dos dimensiones',
'Core:AttributePropertySet' => 'Propiedades',
'Core:AttributePropertySet' => 'Propiedades',
'Core:AttributePropertySet+' => 'Lista de propiedades sin tipo (nombre y valor)',
'Core:AttributeFriendlyName' => 'Nombre común',
'Core:AttributeFriendlyName' => 'Nombre común',
'Core:AttributeFriendlyName+' => 'Atributo creado automáticamente; el nombre común es obtenido de varios atributos',
'Core:FriendlyName-Label' => 'Nombre común',
'Core:FriendlyName-Label' => 'Nombre común',
'Core:FriendlyName-Description' => 'Nombre común',
'Core:AttributeTag' => 'Etiquetas',
'Core:AttributeTag+' => 'Tags~~',
'Core:Context=REST/JSON' => 'REST~~',
'Core:Context=Synchro' => 'Synchro~~',
'Core:Context=Setup' => 'Setup~~',
'Core:Context=GUI:Console' => 'Console~~',
'Core:Context=CRON' => 'cron~~',
'Core:Context=GUI:Portal' => 'Portal~~',
'Core:AttributeTag' => 'Etiquetas',
'Core:AttributeTag+' => '',
'Core:Context=REST/JSON' => 'REST',
'Core:Context=Synchro' => 'Synchro',
'Core:Context=Setup' => 'Configuración',
'Core:Context=GUI:Console' => 'Consola',
'Core:Context=CRON' => 'cron',
'Core:Context=GUI:Portal' => 'Portal',
));
@@ -556,16 +557,16 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Trigger' => 'Disparador',
'Class:Trigger+' => 'Disparador',
'Class:Trigger/Attribute:description' => 'Descripción',
'Class:Trigger' => 'Disparador',
'Class:Trigger+' => 'Disparador',
'Class:Trigger/Attribute:description' => 'Descripción',
'Class:Trigger/Attribute:description+' => 'Descripción',
'Class:Trigger/Attribute:action_list' => 'Acciones',
'Class:Trigger/Attribute:action_list' => 'Acciones',
'Class:Trigger/Attribute:action_list+' => 'Acciones realizadas cuando se activó el disparador',
'Class:Trigger/Attribute:finalclass' => 'Clase',
'Class:Trigger/Attribute:finalclass+' => 'Clase',
'Class:Trigger/Attribute:context' => 'Context~~',
'Class:Trigger/Attribute:context+' => 'Context to allow the trigger to start~~',
'Class:Trigger/Attribute:finalclass' => 'Clase',
'Class:Trigger/Attribute:finalclass+' => 'Clase',
'Class:Trigger/Attribute:context' => 'Contexto',
'Class:Trigger/Attribute:context+' => 'Contexto para permitir el inicio del disparador',
));
//
@@ -944,74 +945,74 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Core:BulkExport:PDFPageOrientation' => 'Orientación de la Página:',
'Core:BulkExport:PageOrientation-L' => 'Horizontal',
'Core:BulkExport:PageOrientation-P' => 'Vertical',
'Core:BulkExport:XMLFormat' => 'Archivo XML (*.xml)',
'Core:BulkExport:XMLOptions' => 'Opciones XML',
'Core:BulkExport:SpreadsheetFormat' => 'Formato Tabla HTML (*.html)',
'Core:BulkExport:SpreadsheetOptions' => 'Opciones de Tabla',
'Core:BulkExport:OptionNoLocalize' => 'Código de exportación en lugar de etiqueta',
'Core:BulkExport:OptionLinkSets' => 'Incluir objetos ligados',
'Core:BulkExport:OptionFormattedText' => 'Conservar formato de texto',
'Core:BulkExport:ScopeDefinition' => 'Definición de los objetos a exportar',
'Core:BulkExportLabelOQLExpression' => 'Consulta OQL:',
'Core:BulkExportLabelPhrasebookEntry' => 'Entrada Consulta de Libreta de Consultas:',
'Core:BulkExportMessageEmptyOQL' => 'Por favor ingrese una consulta OQL válida.',
'Core:BulkExportMessageEmptyPhrasebookEntry' => 'Por favor seleccione un entrada válida de la libreta de consultas.',
'Core:BulkExportQueryPlaceholder' => 'Escriba una consulta OQL aquí...',
'Core:BulkExportCanRunNonInteractive' => 'Click aquí para ejecutar la exportación en modo no interactivo.',
'Core:BulkExportLegacyExport' => 'Click aquí para acceder a la exportación tradicional.',
'Core:BulkExport:XLSXOptions' => 'Opciones Excel',
'Core:BulkExport:TextFormat' => 'Compos texto conteniendo algunas marcas HTML',
'Core:BulkExport:DateTimeFormat' => 'Formato de fecha y hora',
'Core:BulkExport:XMLFormat' => 'Archivo XML (*.xml)',
'Core:BulkExport:XMLOptions' => 'Opciones XML',
'Core:BulkExport:SpreadsheetFormat' => 'Formato Tabla HTML (*.html)',
'Core:BulkExport:SpreadsheetOptions' => 'Opciones de Tabla',
'Core:BulkExport:OptionNoLocalize' => 'Código de exportación en lugar de etiqueta',
'Core:BulkExport:OptionLinkSets' => 'Incluir objetos ligados',
'Core:BulkExport:OptionFormattedText' => 'Conservar formato de texto',
'Core:BulkExport:ScopeDefinition' => 'Definición de los objetos a exportar',
'Core:BulkExportLabelOQLExpression' => 'Consulta OQL:',
'Core:BulkExportLabelPhrasebookEntry' => 'Entrada Consulta de Libreta de Consultas:',
'Core:BulkExportMessageEmptyOQL' => 'Por favor ingrese una consulta OQL válida.',
'Core:BulkExportMessageEmptyPhrasebookEntry' => 'Por favor seleccione un entrada válida de la libreta de consultas.',
'Core:BulkExportQueryPlaceholder' => 'Escriba una consulta OQL aquí...',
'Core:BulkExportCanRunNonInteractive' => 'Click aquí para ejecutar la exportación en modo no interactivo.',
'Core:BulkExportLegacyExport' => 'Click aquí para acceder a la exportación tradicional.',
'Core:BulkExport:XLSXOptions' => 'Opciones Excel',
'Core:BulkExport:TextFormat' => 'Compos texto conteniendo algunas marcas HTML',
'Core:BulkExport:DateTimeFormat' => 'Formato de fecha y hora',
'Core:BulkExport:DateTimeFormatDefault_Example' => 'Formato por omisión (%1$s), ej. %2$s',
'Core:BulkExport:DateTimeFormatCustom_Format' => 'Formato personalizado: %1$s',
'Core:BulkExport:PDF:PageNumber' => 'Page %1$s~~',
'Core:DateTime:Placeholder_d' => 'DD', // Day of the month: 2 digits (with leading zero)
'Core:DateTime:Placeholder_j' => 'D', // Day of the month: 1 or 2 digits (without leading zero)
'Core:DateTime:Placeholder_m' => 'MM', // Month on 2 digits i.e. 01-12
'Core:DateTime:Placeholder_n' => 'M', // Month on 1 or 2 digits 1-12
'Core:DateTime:Placeholder_Y' => 'AAAA', // Year on 4 digits
'Core:DateTime:Placeholder_y' => 'AA', // Year on 2 digits
'Core:DateTime:Placeholder_H' => 'hh', // Hour 00..23
'Core:DateTime:Placeholder_h' => 'h', // Hour 01..12
'Core:DateTime:Placeholder_G' => 'hh', // Hour 0..23
'Core:DateTime:Placeholder_g' => 'h', // Hour 1..12
'Core:DateTime:Placeholder_a' => 'am/pm', // am/pm (lowercase)
'Core:DateTime:Placeholder_A' => 'AM/PM', // AM/PM (uppercase)
'Core:DateTime:Placeholder_i' => 'mm', // minutes, 2 digits: 00..59
'Core:DateTime:Placeholder_s' => 'ss', // seconds, 2 digits 00..59
'Core:Validator:Default' => 'Formato incorrecto',
'Core:Validator:Mandatory' => 'Por favor, ingrese este campo',
'Core:Validator:MustBeInteger' => 'Debe ser un entero',
'Core:Validator:MustSelectOne' => 'Por favor, seleccione uno',
'Core:BulkExport:DateTimeFormatCustom_Format' => 'Formato personalizado: %1$s',
'Core:BulkExport:PDF:PageNumber' => 'Página %1$s',
'Core:DateTime:Placeholder_d' => 'DD', // Day of the month: 2 digits (with leading zero)
'Core:DateTime:Placeholder_j' => 'D', // Day of the month: 1 or 2 digits (without leading zero)
'Core:DateTime:Placeholder_m' => 'MM', // Month on 2 digits i.e. 01-12
'Core:DateTime:Placeholder_n' => 'M', // Month on 1 or 2 digits 1-12
'Core:DateTime:Placeholder_Y' => 'AAAA', // Year on 4 digits
'Core:DateTime:Placeholder_y' => 'AA', // Year on 2 digits
'Core:DateTime:Placeholder_H' => 'hh', // Hour 00..23
'Core:DateTime:Placeholder_h' => 'h', // Hour 01..12
'Core:DateTime:Placeholder_G' => 'hh', // Hour 0..23
'Core:DateTime:Placeholder_g' => 'h', // Hour 1..12
'Core:DateTime:Placeholder_a' => 'am/pm', // am/pm (lowercase)
'Core:DateTime:Placeholder_A' => 'AM/PM', // AM/PM (uppercase)
'Core:DateTime:Placeholder_i' => 'mm', // minutes, 2 digits: 00..59
'Core:DateTime:Placeholder_s' => 'ss', // seconds, 2 digits 00..59
'Core:Validator:Default' => 'Formato incorrecto',
'Core:Validator:Mandatory' => 'Por favor, ingrese este campo',
'Core:Validator:MustBeInteger' => 'Debe ser un entero',
'Core:Validator:MustSelectOne' => 'Por favor, seleccione uno',
));
//
// Class: TagSetFieldData
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:TagSetFieldData' => '%2$s para la clase %1$s',
'Class:TagSetFieldData+' => '~~',
'Class:TagSetFieldData' => '%2$s para la clase %1$s',
'Class:TagSetFieldData+' => 'Datos de campo',
'Class:TagSetFieldData/Attribute:code' => 'Código',
'Class:TagSetFieldData/Attribute:code+' => 'Código interno. Debe contener al menos tres caracteres alfanuméricos',
'Class:TagSetFieldData/Attribute:label' => 'Etiqueta',
'Class:TagSetFieldData/Attribute:label+' => 'Etiqueta mostrada',
'Class:TagSetFieldData/Attribute:description' => 'Descripción',
'Class:TagSetFieldData/Attribute:code' => 'Código',
'Class:TagSetFieldData/Attribute:code+' => 'Código interno. Debe contener al menos tres caracteres alfanuméricos',
'Class:TagSetFieldData/Attribute:label' => 'Etiqueta',
'Class:TagSetFieldData/Attribute:label+' => 'Etiqueta mostrada',
'Class:TagSetFieldData/Attribute:description' => 'Descripción',
'Class:TagSetFieldData/Attribute:description+' => 'Descripción de la etiqueta',
'Class:TagSetFieldData/Attribute:finalclass' => 'Clase',
'Class:TagSetFieldData/Attribute:obj_class' => 'Clase de objeto',
'Class:TagSetFieldData/Attribute:obj_attcode' => 'Código de campo',
'Class:TagSetFieldData/Attribute:finalclass' => 'Clase',
'Class:TagSetFieldData/Attribute:obj_class' => 'Clase de objeto',
'Class:TagSetFieldData/Attribute:obj_attcode' => 'Código de campo',
'Core:TagSetFieldData:ErrorDeleteUsedTag' => 'Etiquetas es uso no pueden ser borradas',
'Core:TagSetFieldData:ErrorDeleteUsedTag' => 'Etiquetas es uso no pueden ser borradas',
'Core:TagSetFieldData:ErrorDuplicateTagCodeOrLabel' => 'Los códigos o las etiquetas deben ser únicos',
'Core:TagSetFieldData:ErrorTagCodeSyntax' => 'El código de la etiqueta debe contener entre 3 y %1$d caracteres alfanuméricos',
'Core:TagSetFieldData:ErrorTagCodeReservedWord' => 'El código elegido es una palabra reservada',
'Core:TagSetFieldData:ErrorTagLabelSyntax' => 'La etiqueta no odebe contener \'%1$s\' y no puede estar vacía',
'Core:TagSetFieldData:ErrorCodeUpdateNotAllowed' => 'Códigos de etiqueta en uso no pueden ser borrados',
'Core:TagSetFieldData:ErrorClassUpdateNotAllowed' => 'Tags "Object Class" cannot be changed~~',
'Core:TagSetFieldData:ErrorAttCodeUpdateNotAllowed' => 'Tags "Attribute Code" cannot be changed~~',
'Core:TagSetFieldData:WhereIsThisTagTab' => 'Uso de la etiqueta (%1$d)~~',
'Core:TagSetFieldData:NoEntryFound' => 'No hay entradas para esta etiqueta',
'Core:TagSetFieldData:ErrorTagCodeSyntax' => 'El código de la etiqueta debe contener entre 3 y %1$d caracteres alfanuméricos',
'Core:TagSetFieldData:ErrorTagCodeReservedWord' => 'El código elegido es una palabra reservada',
'Core:TagSetFieldData:ErrorTagLabelSyntax' => 'La etiqueta no odebe contener \'%1$s\' y no puede estar vacía',
'Core:TagSetFieldData:ErrorCodeUpdateNotAllowed' => 'Códigos de etiqueta en uso no pueden ser borrados',
'Core:TagSetFieldData:ErrorClassUpdateNotAllowed' => 'Etiquetas "Object Class" no pueden ser cambiadas',
'Core:TagSetFieldData:ErrorAttCodeUpdateNotAllowed' => 'Etiquetas "Attribute Code" no pueden ser cambiadas',
'Core:TagSetFieldData:WhereIsThisTagTab' => 'Uso de la etiqueta (%1$d)',
'Core:TagSetFieldData:NoEntryFound' => 'No hay entradas para esta etiqueta',
));
//
@@ -1093,38 +1094,31 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
//
// Class: AbstractResource
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:AbstractResource' => 'Recurso abstracto',
'Class:AbstractResource+' => '~~',
'Class:AbstractResource+' => '',
));
//
// Class: ResourceAdminMenu
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:ResourceAdminMenu' => 'Recursos de Menú de Administración',
'Class:ResourceAdminMenu+' => '~~',
'Class:ResourceAdminMenu+' => '',
));
//
// Class: ResourceRunQueriesMenu
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:ResourceRunQueriesMenu' => 'Recurso Libreta de Consultas',
'Class:ResourceRunQueriesMenu+' => '~~',
'Class:ResourceRunQueriesMenu+' => '',
));
//
// Class: Action
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:ResourceSystemMenu' => 'Recurso Menú de Sistema',
'Class:ResourceSystemMenu+' => '~~',
'Class:ResourceSystemMenu+' => '',
));

View File

@@ -15,13 +15,10 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
* Spanish Localized data
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @traductor Miguel Turrubiates <miguel_tf@yahoo.com>
*/
?>

File diff suppressed because it is too large Load Diff

View File

@@ -965,7 +965,7 @@ try
break;
case 'save_dashboard':
$sDashboardId = utils::ReadParam('dashboard_id', '', false, 'raw_data');
$sDashboardId = utils::ReadParam('dashboard_id', '', false, 'element_identifier');
$aExtraParams = utils::ReadParam('extra_params', array(), false, 'raw_data');
$sReloadURL = utils::ReadParam('reload_url', '', false, 'raw_data');
appUserPreferences::SetPref('display_original_dashboard_'.$sDashboardId, false);
@@ -979,17 +979,16 @@ try
$oDashboard = new RuntimeDashboard($sDashboardId);
$oDashboard->FromParams($aParams);
$oDashboard->Save();
$sDashboardFile = addslashes(utils::ReadParam('file', '', false, 'raw_data'));
$sDivId = utils::Sanitize($sDashboardId, '', 'element_identifier');
$sDashboardFile = addslashes(utils::ReadParam('file', '', false, 'string'));
// trigger a reload of the current page since the dashboard just changed
$oPage->add_script(
<<<EOF
$('.ibo-dashboard#$sDivId').block();
$('.ibo-dashboard#$sDashboardId').block();
$.post(GetAbsoluteUrlAppRoot()+'pages/ajax.render.php',
{ operation: 'reload_dashboard', dashboard_id: '$sDashboardId', file: '$sDashboardFile', extra_params: $sJSExtraParams, reload_url: '$sReloadURL'},
function(data){
$('.ibo-dashboard#$sDivId').html(data);
$('.ibo-dashboard#$sDivId').unblock();
$('.ibo-dashboard#$sDashboardId').html(data);
$('.ibo-dashboard#$sDashboardId').unblock();
}
);
EOF
@@ -1039,7 +1038,7 @@ EOF
$sId = utils::ReadParam('id', '', false, 'context_param');
$aExtraParams = utils::ReadParam('extra_params', array(), false, 'raw_data');
$aExtraParams['dashboard_div_id'] = utils::Sanitize($sId, '', 'element_identifier');
$sDashboardFile = utils::ReadParam('file', '', false, 'raw_data');
$sDashboardFile = utils::ReadParam('file', '', false, 'string');
$sReloadURL = utils::ReadParam('reload_url', '', false, 'raw_data');
$oDashboard = RuntimeDashboard::GetDashboardToEdit($sDashboardFile, $sId);
if (!is_null($oDashboard)) {
@@ -2252,6 +2251,7 @@ EOF
$oPage->add(json_encode($aResult));
break;
/** @noinspection PhpMissingBreakStatementInspection cke_upload_and_browse and cke_browse are chained */
case 'cke_upload_and_browse':
$sTempId = utils::ReadParam('temp_id', '', false, 'transaction_id');
$sObjClass = utils::ReadParam('obj_class', '', false, 'class');
@@ -2308,11 +2308,32 @@ EOF
$oPage->add_linked_script(utils::GetAbsoluteUrlAppRoot().'js/jquery.magnific-popup.min.js');
$sImgUrl = utils::GetAbsoluteUrlAppRoot().INLINEIMAGE_DOWNLOAD_URL;
/** @noinspection SuspiciousAssignmentsInspection cke_upload_and_browse and cke_browse are chained */
$sTempId = utils::ReadParam('temp_id', '', false, 'transaction_id');
$sClass = utils::ReadParam('obj_class', '', false, 'class');
$iObjectId = utils::ReadParam('obj_key', 0, false, 'integer');
$sCKEditorFuncNum = utils::ReadParam('CKEditorFuncNum', '');
if (empty($sTempId)) {
throw new SecurityException('Cannot access endpoint with empty temp_id parameter');
}
if (false === privUITransaction::IsTransactionValid($sTempId, false)) {
throw new SecurityException('Access rejected');
}
if (false === MetaModel::IsValidClass($sClass)) {
throw new CoreUnexpectedValue('Invalid object');
}
if ($iObjectId > 0) {
// searching for object in the DB with a count query
// using DBSearch so that user rights are applied !
$oSearch = new DBObjectSearch($sClass);
$oSearch->AddCondition(MetaModel::DBGetKey($sClass), $iObjectId, '=');
$oSet = new CMDBObjectSet($oSearch);
if (false === $oSet->CountExceeds(0)) {
throw new SecurityException(Dict::S('UI:ObjectDoesNotExist'));
}
}
$sPostUrl = utils::GetAbsoluteUrlAppRoot().'pages/ajax.render.php?CKEditorFuncNum='.$sCKEditorFuncNum;
$oPage->add_style(

View File

@@ -2544,11 +2544,13 @@ class WizStepDone extends WizardStep
$oPage->ok("The installation completed successfully.");
}
$bHasBackup = false;
if (($this->oWizard->GetParameter('mode', '') == 'upgrade') && $this->oWizard->GetParameter('db_backup', false) && $this->oWizard->GetParameter('authent', false))
{
$sBackupDestination = $this->oWizard->GetParameter('db_backup_path', '');
if (file_exists($sBackupDestination.'.tar.gz'))
{
$bHasBackup = true;
// To mitigate security risks: pass only the filename without the extension, the download will add the extension itself
$oPage->p('Your backup is ready');
$oPage->p('<a style="background:transparent;" href="'.utils::GetAbsoluteUrlAppRoot(true).'setup/ajax.dataloader.php?operation=async_action&step_class=WizStepDone&params[backup]='.urlencode($sBackupDestination).'&authent='.$this->oWizard->GetParameter('authent','').'" target="_blank"><img src="../images/icons/icons8-archive-folder.svg" style="border:0;vertical-align:middle;">&nbsp;Download '.basename($sBackupDestination).'</a>');
@@ -2675,7 +2677,10 @@ class WizStepDone extends WizardStep
// avoid leaving in a dirty state
SetupUtils::ExitMaintenanceMode(false);
SetupUtils::ExitReadOnlyMode(false);
SetupUtils::EraseSetupToken();
if (false === $bHasBackup) {
SetupUtils::EraseSetupToken();
}
}
public function CanMoveForward()
@@ -2698,6 +2703,7 @@ class WizStepDone extends WizardStep
public function AsyncAction(WebPage $oPage, $sCode, $aParameters)
{
SetupUtils::EraseSetupToken();
// For security reasons: add the extension now so that this action can be used to read *only* .tar.gz files from the disk...
$sBackupFile = $aParameters['backup'].'.tar.gz';
if (file_exists($sBackupFile))

View File

@@ -491,16 +491,16 @@ try
$iLoopTimeLimit = MetaModel::GetConfig()->Get('max_execution_time_per_loop');
$oMutex = new iTopMutex('synchro_import_'.$oDataSource->GetKey());
$oMutex->Lock();
set_time_limit(intval($iLoopTimeLimit));
foreach ($aData as $iRow => $aRow)
{
/** @noinspection DisconnectedForeachInstructionInspection */
set_time_limit($iLoopTimeLimit);
$sReconciliationCondition = '`primary_key` = '.CMDBSource::Quote($aRow[$iPrimaryKeyCol]);
$sSelect = "SELECT COUNT(*) FROM `$sTable` WHERE $sReconciliationCondition";
$aRes = CMDBSource::QueryToArray($sSelect);
$iCount = (int)$aRes[0]['COUNT(*)'];
if ($iCount === 0)
{
if ($iCount === 0) {
// No record... create it
//
$iCountCreations++;