mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-22 01:58:47 +02:00
Finish 2.6.0
# Conflicts: # core/dbobject.class.php # install.txt
This commit is contained in:
@@ -12,13 +12,13 @@ You are welcome to create pull requests on any of those subjects:
|
||||
|
||||
* 🐛 `:bug:` bug fix
|
||||
* 🔒 `:lock:` security
|
||||
* 🌐 `:globe_with_meridians:` translation
|
||||
* 🌐 `:globe_with_meridians:` translation / i18n / l10n
|
||||
|
||||
If you want to implement a **new feature**, please [create a corresponding ticket](https://sourceforge.net/p/itop/tickets/new/) for review.
|
||||
If you ever want to begin implementation, do so in a fork, and add a link to the corresponding commits in the ticket.
|
||||
If you ever want to begin implementation, do so in a fork, and add a link to the corresponding commits in the ticket.
|
||||
|
||||
### License
|
||||
iTop is distributed under the AGPL-3.0 license (see the [license.txt] file),
|
||||
iTop is distributed under the AGPL-3.0 license (see the [license.txt] file),
|
||||
your code must comply with this license.
|
||||
|
||||
If you want to use another license, you may [create an extension][wiki new ext].
|
||||
@@ -33,28 +33,29 @@ TL;DR:
|
||||
> **create a fork from iTop main repository,
|
||||
> create a branch based on either release branch if present, or develop otherwise**
|
||||
|
||||
We are using the [GitFlow](https://nvie.com/posts/a-successful-git-branching-model/) branch model. That means we have in our repo those
|
||||
We are using the [GitFlow](https://nvie.com/posts/a-successful-git-branching-model/) branch model. That means we have in our repo those
|
||||
main branches:
|
||||
|
||||
- develop: ongoing development version
|
||||
- release/*: if present, that means we are working on a beta version
|
||||
- release/\*: if present, that means we are working on a beta version
|
||||
- master: previous stable version
|
||||
|
||||
For example, if no beta version is currently ongoing we could have:
|
||||
|
||||
- develop containing 2.8 version
|
||||
- master containing 2.7 version
|
||||
- develop containing future 2.8.0 version
|
||||
- master containing 2.7.x maintenance version
|
||||
|
||||
In this example, when 2.8 beta is shipped that will become:
|
||||
In this example, when 2.8.0-beta is shipped that will become:
|
||||
|
||||
- develop: 2.9 version
|
||||
- release/2.8: 2.8 beta
|
||||
- master: 2.7 version
|
||||
- develop: future 2.9.0 version
|
||||
- release/2.8: 2.8.0-beta
|
||||
- master: 2.7.x maintenance version
|
||||
|
||||
And when 2.8 final will be out:
|
||||
And when 2.8.0 final will be out:
|
||||
|
||||
- develop: 2.9 version
|
||||
- master: 2.8 version
|
||||
- develop: future 2.9.0 version
|
||||
- master: 2.8.x maintenance version
|
||||
- support/2.7 : 2.7.x maintenance version
|
||||
|
||||
|
||||
## Coding
|
||||
@@ -63,6 +64,10 @@ And when 2.8 final will be out:
|
||||
|
||||
Please follow [our guidelines](https://www.itophub.io/wiki/page?id=latest%3Acustomization%3Acoding_standards).
|
||||
|
||||
### 🌐 Translations
|
||||
|
||||
A [dedicated page](https://www.itophub.io/wiki/page?id=latest%3Acustomization%3Atranslation) is available in the official wiki.
|
||||
|
||||
### Tests
|
||||
|
||||
Please create tests that covers as much as possible the code you're submitting.
|
||||
@@ -75,7 +80,7 @@ Our tests are located in the `test/` directory, containing a PHPUnit config file
|
||||
* Use the present tense ("Add feature" not "Added feature")
|
||||
* Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
|
||||
* Limit the first line to 72 characters or less
|
||||
* Please start the commit message with an applicable emoji (following the [Gitmoji guide](https://gitmoji.carloscuesta.me/).). For example :
|
||||
* Please start the commit message with an applicable emoji code (following the [Gitmoji guide](https://gitmoji.carloscuesta.me/)). For example :
|
||||
* 🌐 `:globe_with_meridians:` for translations
|
||||
* 🎨 `:art:` when improving the format/structure of the code
|
||||
* ⚡️ `:zap:` when improving performance
|
||||
|
||||
@@ -35,7 +35,7 @@ iTop also offers mass import tools and web services to integrate with your IT
|
||||
- [Changes since the previous version][58]
|
||||
- [New features][59]
|
||||
- [Migration notes][60]
|
||||
- [Download iTop 2.6.0-beta][61]
|
||||
- [Download iTop 2.6.0][61]
|
||||
|
||||
|
||||
### Version 2.5
|
||||
@@ -88,7 +88,6 @@ We would like to give a special thank you to the people from the community who c
|
||||
#### Aliases
|
||||
- chifu1234
|
||||
- cprobst
|
||||
- jbostoen
|
||||
- Karkoff1212
|
||||
- larhip
|
||||
- Laura
|
||||
@@ -128,14 +127,14 @@ We would like to give a special thank you to the people from the community who c
|
||||
[50]: https://www.itophub.io/wiki/page?id=2_4_0:release:change_log
|
||||
[51]: https://www.itophub.io/wiki/page?id=2_4_0:release:2_4_whats_new
|
||||
[52]: https://www.itophub.io/wiki/page?id=2_4_0:install:230_to_240_migration_notes
|
||||
[53]: https://sourceforge.net/projects/itop/files/itop/2.4.1/iTop-2.4.1-3714.zip/download
|
||||
[53]: https://sourceforge.net/projects/itop/files/itop/2.4.1
|
||||
|
||||
[54]: https://www.itophub.io/wiki/page?id=2_5_0:release:change_log
|
||||
[55]: https://www.itophub.io/wiki/page?id=2_5_0:release:2_5_whats_new
|
||||
[56]: https://www.itophub.io/wiki/page?id=2_5_0:install:240_to_250_migration_notes
|
||||
[57]: https://sourceforge.net/projects/itop/files/itop/2.5.0/iTop-2.5.0-3935.zip/download
|
||||
[57]: https://sourceforge.net/projects/itop/files/itop/2.5.0
|
||||
|
||||
[58]: https://www.itophub.io/wiki/page?id=2_6_0:release:change_log
|
||||
[59]: https://www.itophub.io/wiki/page?id=2_6_0:release:2_6_whats_new
|
||||
[60]: https://www.itophub.io/wiki/page?id=2_6_0:install:250_to_260_migration_notes
|
||||
[61]: https://sourceforge.net/projects/itop/files/itop/2.6.0-beta/iTop-2.6-beta-4146.zip/download
|
||||
[61]: https://sourceforge.net/projects/itop/files/itop/2.6.0
|
||||
|
||||
@@ -3690,6 +3690,9 @@ EOF
|
||||
return $aErrors;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function DBInsertNoReload()
|
||||
{
|
||||
$res = parent::DBInsertNoReload();
|
||||
@@ -3707,6 +3710,7 @@ EOF
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
* Attaches InlineImages to the current object
|
||||
*/
|
||||
protected function OnObjectKeyReady()
|
||||
@@ -3831,6 +3835,12 @@ EOF
|
||||
$this->bAllowWrite = $bAllow;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \OQLException
|
||||
*/
|
||||
public function DoCheckToWrite()
|
||||
{
|
||||
parent::DoCheckToWrite();
|
||||
|
||||
@@ -1272,6 +1272,10 @@ abstract class DashletGroupBy extends Dashlet
|
||||
$sBlockId = 'block_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occuring in the same DOM)
|
||||
$oBlock = new DisplayBlock($oFilter, $sType);
|
||||
$oBlock->Display($oPage, $sBlockId, array_merge($aExtraParams, $aParams));
|
||||
if($bEditMode)
|
||||
{
|
||||
$oPage->add('<div class="dashlet-blocker"></div>');
|
||||
}
|
||||
$oPage->add('</div>');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1171,7 +1171,7 @@ class utils
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Get target configuration file name (including full path)
|
||||
* @return string target configuration file name (including full path)
|
||||
*/
|
||||
public static function GetConfigFilePath($sEnvironment = null)
|
||||
{
|
||||
@@ -1181,6 +1181,17 @@ class utils
|
||||
}
|
||||
return APPCONF.$sEnvironment.'/'.ITOP_CONFIG_FILE;
|
||||
}
|
||||
/**
|
||||
* @return string target configuration file name (including relative path)
|
||||
*/
|
||||
public static function GetConfigFilePathRelative($sEnvironment = null)
|
||||
{
|
||||
if (is_null($sEnvironment))
|
||||
{
|
||||
$sEnvironment = self::GetCurrentEnvironment();
|
||||
}
|
||||
return "conf/".$sEnvironment.'/'.ITOP_CONFIG_FILE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string the absolute URL to the modules root path
|
||||
|
||||
@@ -332,6 +332,18 @@ class BulkChange
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DBObject $oTargetObj
|
||||
* @param array $aRowData
|
||||
* @param array $aErrors
|
||||
*
|
||||
* @return array
|
||||
* @throws \CoreException
|
||||
* @throws \CoreUnexpectedValue
|
||||
* @throws \MissingQueryArgument
|
||||
* @throws \MySQLException
|
||||
* @throws \MySQLHasGoneAwayException
|
||||
*/
|
||||
protected function PrepareObject(&$oTargetObj, $aRowData, &$aErrors)
|
||||
{
|
||||
$aResults = array();
|
||||
@@ -477,7 +489,9 @@ class BulkChange
|
||||
if (!$oAttDef->IsWritable() && in_array($sAttCode, $this->m_aReconcilKeys)){ continue; }
|
||||
|
||||
$aReasons = array();
|
||||
$iFlags = $oTargetObj->GetAttributeFlags($sAttCode, $aReasons);
|
||||
$iFlags = ($oTargetObj->IsNew())
|
||||
? $oTargetObj->GetInitialStateAttributeFlags($sAttCode, $aReasons)
|
||||
: $oTargetObj->GetAttributeFlags($sAttCode, $aReasons);
|
||||
if ( (($iFlags & OPT_ATT_READONLY) == OPT_ATT_READONLY) && ( $oTargetObj->Get($sAttCode) != $aRowData[$iCol]) )
|
||||
{
|
||||
$aErrors[$sAttCode] = Dict::Format('UI:CSVReport-Value-Issue-Readonly', $sAttCode, $oTargetObj->Get($sAttCode), $aRowData[$iCol]);
|
||||
|
||||
@@ -188,6 +188,16 @@ abstract class CMDBObject extends DBObject
|
||||
self::$m_oCurrChange->DBInsert();
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreCannotSaveObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \CoreUnexpectedValue
|
||||
* @throws \CoreWarning
|
||||
* @throws \MySQLException
|
||||
* @throws \OQLException
|
||||
*/
|
||||
protected function RecordObjCreation()
|
||||
{
|
||||
// Delete any existing change tracking about the current object (IDs can be reused due to InnoDb bug; see TRAC #886)
|
||||
@@ -206,6 +216,7 @@ abstract class CMDBObject extends DBObject
|
||||
MetaModel::PurgeData($oFilter);
|
||||
|
||||
parent::RecordObjCreation();
|
||||
|
||||
$oMyChangeOp = MetaModel::NewObject("CMDBChangeOpCreate");
|
||||
$oMyChangeOp->Set("objclass", get_class($this));
|
||||
$oMyChangeOp->Set("objkey", $this->GetKey());
|
||||
@@ -232,9 +243,17 @@ abstract class CMDBObject extends DBObject
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $sAttCode
|
||||
* @param string $sAttCode
|
||||
* @param $original Original value
|
||||
* @param $value Current value
|
||||
*
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreCannotSaveObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \CoreUnexpectedValue
|
||||
* @throws \CoreWarning
|
||||
* @throws \MySQLException
|
||||
* @throws \OQLException
|
||||
*/
|
||||
protected function RecordAttChange($sAttCode, $original, $value)
|
||||
{
|
||||
@@ -438,6 +457,14 @@ abstract class CMDBObject extends DBObject
|
||||
/**
|
||||
* @param array $aValues
|
||||
* @param array $aOrigValues
|
||||
*
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreCannotSaveObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \CoreUnexpectedValue
|
||||
* @throws \CoreWarning
|
||||
* @throws \MySQLException
|
||||
* @throws \OQLException
|
||||
*/
|
||||
protected function RecordAttChanges(array $aValues, array $aOrigValues)
|
||||
{
|
||||
|
||||
@@ -72,6 +72,9 @@ define('DEFAULT_ENCRYPTION_LIB', 'Mcrypt'); // We'll define the best encryption
|
||||
* configuration data (this class cannot not be localized, because it is responsible for loading the dictionaries)
|
||||
*
|
||||
* @package iTopORM
|
||||
*
|
||||
* @see \MetaModel::GetConfig() to get the config, if the metamodel was already loaded
|
||||
* @see utils::GetConfig() to load config from the current env, if metamodel is not loaded
|
||||
*/
|
||||
class Config
|
||||
{
|
||||
|
||||
@@ -70,11 +70,14 @@ abstract class DBObject implements iDisplay
|
||||
{
|
||||
private static $m_aMemoryObjectsByClass = array();
|
||||
|
||||
private static $m_aBulkInsertItems = array(); // class => array of ('table' => array of (array of <sql_value>))
|
||||
private static $m_aBulkInsertCols = array(); // class => array of ('table' => array of <sql_column>)
|
||||
/** @var array class => array of ('table' => array of (array of <sql_value>)) */
|
||||
private static $m_aBulkInsertItems = array();
|
||||
/** @var array class => array of ('table' => array of <sql_column>) */
|
||||
private static $m_aBulkInsertCols = array();
|
||||
private static $m_bBulkInsert = false;
|
||||
|
||||
protected $m_bIsInDB = false; // true IIF the object is mapped to a DB record
|
||||
/** @var bool true IIF the object is mapped to a DB record */
|
||||
protected $m_bIsInDB = false;
|
||||
protected $m_iKey = null;
|
||||
private $m_aCurrValues = array();
|
||||
protected $m_aOrigValues = array();
|
||||
@@ -232,7 +235,9 @@ abstract class DBObject implements iDisplay
|
||||
|
||||
/**
|
||||
* @param bool $bAllowAllData DEPRECATED: the reload must never fail!
|
||||
*
|
||||
* @throws CoreException
|
||||
* @internal
|
||||
*/
|
||||
public function Reload($bAllowAllData = false)
|
||||
{
|
||||
@@ -748,12 +753,24 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Overridable callback, called by \DBObject::DoComputeValues
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
public function ComputeValues()
|
||||
{
|
||||
}
|
||||
|
||||
// Compute scalar attributes that depend on any other type of attribute
|
||||
/**
|
||||
* Compute scalar attributes that depend on any other type of attribute
|
||||
*
|
||||
* @throws \CoreException
|
||||
* @throws \CoreUnexpectedValue
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
final public function DoComputeValues()
|
||||
{
|
||||
// TODO - use a flag rather than checking the call stack -> this will certainly accelerate things
|
||||
@@ -1075,7 +1092,9 @@ abstract class DBObject implements iDisplay
|
||||
|
||||
/**
|
||||
* Gets the name of an object in a safe manner for displaying inside a web page
|
||||
*
|
||||
* @return string
|
||||
* @throws \CoreException
|
||||
*/
|
||||
public function GetName()
|
||||
{
|
||||
@@ -1087,13 +1106,20 @@ abstract class DBObject implements iDisplay
|
||||
* since the " < > characters are not escaped and the name may contain some XSS script
|
||||
* instructions.
|
||||
* Use this function only for internal computations or for an output to a non-HTML destination
|
||||
*
|
||||
* @return string
|
||||
* @throws \CoreException
|
||||
*/
|
||||
public function GetRawName()
|
||||
{
|
||||
return $this->Get('friendlyname');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed|string '' if no state attribute, object representing its value otherwise
|
||||
* @throws \CoreException
|
||||
* @internal
|
||||
*/
|
||||
public function GetState()
|
||||
{
|
||||
$sStateAttCode = MetaModel::GetStateAttributeCode(get_class($this));
|
||||
@@ -1158,15 +1184,18 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $sAttCode $sAttCode The code of the attribute
|
||||
* @param array $aReasons To store the reasons why the attribute is read-only (info about the synchro replicas)
|
||||
* @param string $sTargetState The target state in which to evalutate the flags, if empty the current state will be
|
||||
* used
|
||||
*
|
||||
* @return integer the binary combination of flags (OPT_ATT_HIDDEN, OPT_ATT_READONLY, OPT_ATT_MANDATORY...) for the
|
||||
* given attribute in the given state of the object
|
||||
* @return integer the binary combination of flags for the given attribute in the given state of the object<br>
|
||||
* Values can be one of the OPT_ATT_HIDDEN, OPT_ATT_READONLY, OPT_ATT_MANDATORY, ... (see define in metamodel.class.php)
|
||||
* @throws \CoreException
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @see GetInitialStateAttributeFlags for creation
|
||||
*/
|
||||
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
|
||||
{
|
||||
@@ -1274,11 +1303,18 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the set of flags (OPT_ATT_HIDDEN, OPT_ATT_READONLY, OPT_ATT_MANDATORY...)
|
||||
* for the given attribute for the current state of the object considered as an INITIAL state
|
||||
* @param string $sAttCode The code of the attribute
|
||||
* @return integer Flags: the binary combination of the flags applicable to this attribute
|
||||
*/
|
||||
* @param array $aReasons
|
||||
*
|
||||
* @return integer The binary combination of the flags for the given attribute for the current state of the object
|
||||
* considered as an INITIAL state.<br>
|
||||
* Values can be one of the OPT_ATT_HIDDEN, OPT_ATT_READONLY, OPT_ATT_MANDATORY, ... (see define in metamodel.class.php)
|
||||
* @throws \CoreException
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @see GetAttributeFlags when modifying the object
|
||||
*/
|
||||
public function GetInitialStateAttributeFlags($sAttCode, &$aReasons = array())
|
||||
{
|
||||
$iFlags = 0;
|
||||
@@ -1290,17 +1326,18 @@ abstract class DBObject implements iDisplay
|
||||
return $iFlags; // No need to care about the synchro flags since we'll be creating a new object anyway
|
||||
}
|
||||
|
||||
// check if the given (or current) value is suitable for the attribute
|
||||
// return true if successfull
|
||||
// return the error desciption otherwise
|
||||
/**
|
||||
* Check if the given (or current) value is suitable for the attribute
|
||||
*
|
||||
* @param $sAttCode
|
||||
* @param null $value
|
||||
* @param boolean|string $value true if successfull, the error desciption otherwise
|
||||
*
|
||||
* @return bool|string
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \OQLException
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
public function CheckValue($sAttCode, $value = null)
|
||||
{
|
||||
@@ -1431,8 +1468,13 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// check attributes together
|
||||
|
||||
/**
|
||||
* check attributes together
|
||||
*
|
||||
* @return bool
|
||||
* @api
|
||||
*/
|
||||
public function CheckConsistency()
|
||||
{
|
||||
return true;
|
||||
@@ -1560,12 +1602,14 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
|
||||
/**
|
||||
* check integrity rules (before inserting or updating the object)
|
||||
* a displayable error is returned
|
||||
* Check integrity rules (before inserting or updating the object)
|
||||
*
|
||||
* Errors should be inserted in {@link $m_aCheckIssues} and {@link $m_aCheckWarnings} arrays
|
||||
*
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \OQLException
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
public function DoCheckToWrite()
|
||||
@@ -1631,6 +1675,7 @@ abstract class DBObject implements iDisplay
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \OQLException
|
||||
*
|
||||
* @internal do not overwrite ! Use {@link DoCheckToWrite} instead
|
||||
*/
|
||||
final public function CheckToWrite()
|
||||
@@ -1661,6 +1706,10 @@ abstract class DBObject implements iDisplay
|
||||
// check if it is allowed to delete the existing object from the database
|
||||
// a displayable error is returned
|
||||
/**
|
||||
* check if it is allowed to delete the existing object from the database
|
||||
*
|
||||
* a displayable error is added in {@link $m_aDeleteIssues}
|
||||
*
|
||||
* @param \DeletionPlan $oDeletionPlan
|
||||
*
|
||||
* @throws \CoreException
|
||||
@@ -1782,10 +1831,14 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
}
|
||||
return $aDelta;
|
||||
}
|
||||
}
|
||||
|
||||
// List the attributes that have been changed
|
||||
// Returns an array of attname => currentvalue
|
||||
/**
|
||||
* List the attributes that have been changed
|
||||
*
|
||||
* @return array attname => currentvalue
|
||||
* @internal
|
||||
*/
|
||||
public function ListChanges()
|
||||
{
|
||||
if ($this->m_bIsInDB)
|
||||
@@ -1845,13 +1898,21 @@ abstract class DBObject implements iDisplay
|
||||
return true;
|
||||
}
|
||||
|
||||
// used only by insert
|
||||
/**
|
||||
* Used only by insert, Meant to be overloaded
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
protected function OnObjectKeyReady()
|
||||
{
|
||||
// Meant to be overloaded
|
||||
}
|
||||
|
||||
// used both by insert/update
|
||||
/**
|
||||
* used both by insert/update
|
||||
*
|
||||
* @throws \CoreException
|
||||
* @internal
|
||||
*/
|
||||
private function DBWriteLinks()
|
||||
{
|
||||
foreach(MetaModel::ListAttributeDefs(get_class($this)) as $sAttCode => $oAttDef)
|
||||
@@ -1860,12 +1921,18 @@ abstract class DBObject implements iDisplay
|
||||
if (!array_key_exists($sAttCode, $this->m_aTouchedAtt)) continue;
|
||||
if (array_key_exists($sAttCode, $this->m_aModifiedAtt) && ($this->m_aModifiedAtt[$sAttCode] == false)) continue;
|
||||
|
||||
/** @var \ormLinkSet $oLinkSet */
|
||||
$oLinkSet = $this->m_aCurrValues[$sAttCode];
|
||||
$oLinkSet->DBWrite($this);
|
||||
}
|
||||
}
|
||||
|
||||
// used both by insert/update
|
||||
/**
|
||||
* Used both by insert/update
|
||||
*
|
||||
* @throws \CoreException
|
||||
* @internal
|
||||
*/
|
||||
private function WriteExternalAttributes()
|
||||
{
|
||||
foreach (MetaModel::ListAttributeDefs(get_class($this)) as $sAttCode => $oAttDef)
|
||||
@@ -1906,8 +1973,18 @@ abstract class DBObject implements iDisplay
|
||||
self::$m_aBulkInsertItems = array();
|
||||
self::$m_aBulkInsertCols = array();
|
||||
self::$m_bBulkInsert = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Persists new object in the DB
|
||||
*
|
||||
* @param $sTableClass
|
||||
*
|
||||
* @return bool|int false if nothing to persist (no change), new key value otherwise
|
||||
* @throws \CoreException
|
||||
* @throws \MySQLException
|
||||
* @internal
|
||||
*/
|
||||
private function DBInsertSingleTable($sTableClass)
|
||||
{
|
||||
$sTable = MetaModel::DBGetTable($sTableClass);
|
||||
@@ -1990,7 +2067,7 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert of record for the new object into the database
|
||||
* Persists object to new records in the DB
|
||||
*
|
||||
* @return int key of the newly created object
|
||||
* @throws \ArchivedObjectException
|
||||
@@ -2000,6 +2077,8 @@ abstract class DBObject implements iDisplay
|
||||
* @throws \CoreWarning
|
||||
* @throws \MySQLException
|
||||
* @throws \OQLException
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
public function DBInsertNoReload()
|
||||
{
|
||||
@@ -2048,6 +2127,7 @@ abstract class DBObject implements iDisplay
|
||||
if (in_array($sState, $oAttDef->GetStates()))
|
||||
{
|
||||
// Start the stop watch and compute the deadlines
|
||||
/** @var \ormStopWatch $oSW */
|
||||
$oSW = $this->Get($sAttCode);
|
||||
$oSW->Start($this, $oAttDef);
|
||||
$oSW->ComputeDeadlines($this, $oAttDef);
|
||||
@@ -2203,6 +2283,17 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int|null inserted object key
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreCannotSaveObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \CoreUnexpectedValue
|
||||
* @throws \CoreWarning
|
||||
* @throws \MySQLException
|
||||
* @throws \OQLException
|
||||
* @internal
|
||||
*/
|
||||
public function DBInsert()
|
||||
{
|
||||
$this->DBInsertNoReload();
|
||||
@@ -3021,32 +3112,56 @@ abstract class DBObject implements iDisplay
|
||||
self::$aPortalToURLMaker[$sPortalId] = $sUrlMakerClass;
|
||||
}
|
||||
|
||||
// To be optionaly overloaded
|
||||
/**
|
||||
* Can be overloaded
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
protected function OnInsert()
|
||||
{
|
||||
}
|
||||
|
||||
// To be optionaly overloaded
|
||||
|
||||
/**
|
||||
* Can be overloaded
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
protected function AfterInsert()
|
||||
{
|
||||
}
|
||||
|
||||
// To be optionaly overloaded
|
||||
/**
|
||||
* Can be overloaded
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
protected function OnUpdate()
|
||||
{
|
||||
}
|
||||
|
||||
// To be optionaly overloaded
|
||||
/**
|
||||
* Can be overloaded
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
protected function AfterUpdate()
|
||||
{
|
||||
}
|
||||
|
||||
// To be optionaly overloaded
|
||||
/**
|
||||
* Can be overloaded
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
protected function OnDelete()
|
||||
{
|
||||
}
|
||||
|
||||
// To be optionaly overloaded
|
||||
/**
|
||||
* Can be overloaded
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
protected function AfterDelete()
|
||||
{
|
||||
}
|
||||
@@ -3128,8 +3243,10 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
|
||||
/**
|
||||
* This object has been created/deleted, record that as a change in link sets pointing to this (if any)
|
||||
*/
|
||||
* This object has been created/deleted, record that as a change in link sets pointing to this (if any)
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
private function RecordLinkSetListChange($bAdd = true)
|
||||
{
|
||||
foreach(MetaModel::GetTrackForwardExternalKeys(get_class($this)) as $sExtKeyAttCode => $oLinkSet)
|
||||
@@ -3154,6 +3271,9 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
protected function RecordObjCreation()
|
||||
{
|
||||
$this->RecordLinkSetListChange(true);
|
||||
@@ -3527,6 +3647,15 @@ abstract class DBObject implements iDisplay
|
||||
return $iFlags;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool true if this object is used in a data synchro
|
||||
* @throws \CoreException
|
||||
* @throws \CoreUnexpectedValue
|
||||
* @throws \MySQLException
|
||||
* @throws \OQLException
|
||||
* @internal
|
||||
* @see \SynchroDataSource
|
||||
*/
|
||||
public function InSyncScope()
|
||||
{
|
||||
//
|
||||
|
||||
@@ -1273,6 +1273,7 @@ class DisplayableGraph extends SimpleGraph
|
||||
|
||||
$oPdf->SetAutoPageBreak(true, $fBreakMargin);
|
||||
$oPdf->SetAlpha(1);
|
||||
$oPdf->SetTextColor(0, 0, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -178,18 +178,19 @@ class InlineImage extends DBObject
|
||||
$oInlineImage->DBUpdate();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
IssueLog::Error('InlineImage: Error during FinalizeInlineImages(), no transaction ID for object '.get_class($oObject).'#'.$oObject->GetKey().'.');
|
||||
|
||||
IssueLog::Error('|- Call stack:');
|
||||
$oException = new Exception();
|
||||
$sStackTrace = $oException->getTraceAsString();
|
||||
IssueLog::Error($sStackTrace);
|
||||
|
||||
IssueLog::Error('|- POST vars:');
|
||||
IssueLog::Error(print_r($_POST, true));
|
||||
}
|
||||
// For tracing issues with Inline Images... but beware not all updates are interactive, so this trace happens when creating objects non-interactively (REST, Synchro...)
|
||||
// else
|
||||
// {
|
||||
// IssueLog::Error('InlineImage: Error during FinalizeInlineImages(), no transaction ID for object '.get_class($oObject).'#'.$oObject->GetKey().'.');
|
||||
//
|
||||
// IssueLog::Error('|- Call stack:');
|
||||
// $oException = new Exception();
|
||||
// $sStackTrace = $oException->getTraceAsString();
|
||||
// IssueLog::Error($sStackTrace);
|
||||
//
|
||||
// IssueLog::Error('|- POST vars:');
|
||||
// IssueLog::Error(print_r($_POST, true));
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2130,6 +2130,17 @@ select#org_id {
|
||||
padding: 5px;
|
||||
margin: 0;
|
||||
}
|
||||
/* Prevent cursor clicking on the calendar (eg. While editing dashlet) */
|
||||
.dashlet-blocker {
|
||||
position: absolute;
|
||||
z-index: 9;
|
||||
/* To be above calendar links & all, but below .close-box (9) */
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
td.layout_cell {
|
||||
height: 50px;
|
||||
/* min-height does not work */
|
||||
|
||||
@@ -2478,6 +2478,16 @@ select#org_id {
|
||||
padding: 5px;
|
||||
margin:0;
|
||||
}
|
||||
/* Prevent cursor clicking on the calendar (eg. While editing dashlet) */
|
||||
.dashlet-blocker {
|
||||
position: absolute;
|
||||
z-index: 9; /* To be above calendar links & all, but below .close-box (9) */
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
td.layout_cell {
|
||||
height: 50px; /* min-height does not work */
|
||||
vertical-align: top;
|
||||
|
||||
@@ -184,7 +184,15 @@ EOF
|
||||
$sFile = utils::ReadParam('file', '', false, 'raw_data');
|
||||
$oBackup = new DBBackupScheduled();
|
||||
$sBackupDir = APPROOT.'data/backups/';
|
||||
$oBackup->DownloadBackup($sBackupDir.$sFile);
|
||||
$sPathNoDotDotPattern = '/^((?!\/\.\.\/).)*$/';
|
||||
if(preg_match($sPathNoDotDotPattern, $sBackupDir.$sFile) == 1)
|
||||
{
|
||||
$oBackup->DownloadBackup($sBackupDir.$sFile);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new InvalidParameterException('Invalid file path');
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,10 +104,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Organization/Attribute:deliverymodel_name+' => '',
|
||||
'Class:Organization/Attribute:parent_id_friendlyname' => '上级组织',
|
||||
'Class:Organization/Attribute:parent_id_friendlyname+' => '上级组织',
|
||||
'Class:Organization/Attribute:overview' => 'Overview~~',
|
||||
'Organization:Overview:FunctionalCIs' => 'Configuration items of this organization~~',
|
||||
'Organization:Overview:FunctionalCIs:subtitle' => 'by type~~',
|
||||
'Organization:Overview:Users' => 'iTop Users within this organization~~',
|
||||
'Class:Organization/Attribute:overview' => '概览',
|
||||
'Organization:Overview:FunctionalCIs' => '该组织的所有配置项',
|
||||
'Organization:Overview:FunctionalCIs:subtitle' => '按类型',
|
||||
'Organization:Overview:Users' => '该组织里所有的iTop 用户',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -175,8 +175,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Contact/Attribute:function' => '职责',
|
||||
'Class:Contact/Attribute:function+' => '',
|
||||
'Class:Contact/Attribute:cis_list' => '配置项',
|
||||
'Class:Contact/Attribute:cis_list+' => 'All the configuration items linked to this contact',
|
||||
'Class:Contact/Attribute:finalclass' => 'Contact sub-class',
|
||||
'Class:Contact/Attribute:cis_list+' => '该联系人关联的所有配置项',
|
||||
'Class:Contact/Attribute:finalclass' => '联系人子类别',
|
||||
'Class:Contact/Attribute:finalclass+' => 'Name of the final class',
|
||||
));
|
||||
|
||||
@@ -207,7 +207,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Person/Attribute:team_list+' => '这个人归属的所有团队',
|
||||
'Class:Person/Attribute:tickets_list' => '工单',
|
||||
'Class:Person/Attribute:tickets_list+' => '这个人发起的所有工单',
|
||||
'Class:Person/Attribute:manager_id_friendlyname' => 'Manager friendly name',
|
||||
'Class:Person/Attribute:manager_id_friendlyname' => '经理姓名',
|
||||
'Class:Person/Attribute:manager_id_friendlyname+' => '',
|
||||
'Class:Person/Attribute:picture' => '头像',
|
||||
'Class:Person/Attribute:picture+' => '',
|
||||
@@ -245,7 +245,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Document/Attribute:org_name+' => '',
|
||||
'Class:Document/Attribute:documenttype_id' => '文档类型',
|
||||
'Class:Document/Attribute:documenttype_id+' => '',
|
||||
'Class:Document/Attribute:documenttype_name' => 'Document type name',
|
||||
'Class:Document/Attribute:documenttype_name' => '文档类型名称',
|
||||
'Class:Document/Attribute:documenttype_name+' => '',
|
||||
'Class:Document/Attribute:version' => '版本',
|
||||
'Class:Document/Attribute:version+' => '',
|
||||
@@ -259,13 +259,13 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Document/Attribute:status/Value:obsolete+' => '',
|
||||
'Class:Document/Attribute:status/Value:published' => '已发布',
|
||||
'Class:Document/Attribute:status/Value:published+' => '',
|
||||
'Class:Document/Attribute:cis_list' => 'CIs~~',
|
||||
'Class:Document/Attribute:cis_list+' => 'All the configuration items linked to this document~~',
|
||||
'Class:Document/Attribute:contracts_list' => 'Contracts~~',
|
||||
'Class:Document/Attribute:contracts_list+' => 'All the contracts linked to this document~~',
|
||||
'Class:Document/Attribute:services_list' => 'Services~~',
|
||||
'Class:Document/Attribute:services_list+' => 'All the services linked to this document~~',
|
||||
'Class:Document/Attribute:finalclass' => 'Document sub-class',
|
||||
'Class:Document/Attribute:cis_list' => '配置项',
|
||||
'Class:Document/Attribute:cis_list+' => '该文档关联的所有配置项',
|
||||
'Class:Document/Attribute:contracts_list' => '合同',
|
||||
'Class:Document/Attribute:contracts_list+' => '该文档关联的所有合同',
|
||||
'Class:Document/Attribute:services_list' => '服务',
|
||||
'Class:Document/Attribute:services_list+' => '该文档关联的所有服务',
|
||||
'Class:Document/Attribute:finalclass' => '文档子类别',
|
||||
'Class:Document/Attribute:finalclass+' => 'Name of the final class',
|
||||
));
|
||||
|
||||
@@ -530,17 +530,17 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Server' => '服务器',
|
||||
'Class:Server+' => '',
|
||||
'Class:Server/Attribute:osfamily_id' => 'OS家族',
|
||||
'Class:Server/Attribute:osfamily_id' => '操作系统家族',
|
||||
'Class:Server/Attribute:osfamily_id+' => '',
|
||||
'Class:Server/Attribute:osfamily_name' => 'OS家族名称',
|
||||
'Class:Server/Attribute:osfamily_name' => '操作系统家族名称',
|
||||
'Class:Server/Attribute:osfamily_name+' => '',
|
||||
'Class:Server/Attribute:osversion_id' => 'OS版本',
|
||||
'Class:Server/Attribute:osversion_id' => '操作系统版本',
|
||||
'Class:Server/Attribute:osversion_id+' => '',
|
||||
'Class:Server/Attribute:osversion_name' => 'OS版本名称',
|
||||
'Class:Server/Attribute:osversion_name' => '操作系统版本名称',
|
||||
'Class:Server/Attribute:osversion_name+' => '',
|
||||
'Class:Server/Attribute:oslicence_id' => 'OS许可证',
|
||||
'Class:Server/Attribute:oslicence_id' => '操作系统许可证',
|
||||
'Class:Server/Attribute:oslicence_id+' => '',
|
||||
'Class:Server/Attribute:oslicence_name' => 'OS许可证名称',
|
||||
'Class:Server/Attribute:oslicence_name' => '操作系统许可证名称',
|
||||
'Class:Server/Attribute:oslicence_name+' => '',
|
||||
'Class:Server/Attribute:cpu' => 'CPU',
|
||||
'Class:Server/Attribute:cpu+' => '',
|
||||
@@ -601,13 +601,13 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:PC' => 'PC',
|
||||
'Class:PC+' => '',
|
||||
'Class:PC/Attribute:osfamily_id' => 'OS家族',
|
||||
'Class:PC/Attribute:osfamily_id' => '操作系统家族',
|
||||
'Class:PC/Attribute:osfamily_id+' => '',
|
||||
'Class:PC/Attribute:osfamily_name' => 'OS 家族名称',
|
||||
'Class:PC/Attribute:osfamily_name' => '操作系统家族名称',
|
||||
'Class:PC/Attribute:osfamily_name+' => '',
|
||||
'Class:PC/Attribute:osversion_id' => 'OS版本',
|
||||
'Class:PC/Attribute:osversion_id' => '操作系统版本',
|
||||
'Class:PC/Attribute:osversion_id+' => '',
|
||||
'Class:PC/Attribute:osversion_name' => 'OS 版本名称',
|
||||
'Class:PC/Attribute:osversion_name' => '操作系统版本名称',
|
||||
'Class:PC/Attribute:osversion_name+' => '',
|
||||
'Class:PC/Attribute:cpu' => 'CPU',
|
||||
'Class:PC/Attribute:cpu+' => '',
|
||||
@@ -701,9 +701,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:ApplicationSolution' => '应用方案',
|
||||
'Class:ApplicationSolution+' => '',
|
||||
'Class:ApplicationSolution/Attribute:functionalcis_list' => '配置项',
|
||||
'Class:ApplicationSolution/Attribute:functionalcis_list+' => 'All the configuration items that compose this application solution',
|
||||
'Class:ApplicationSolution/Attribute:functionalcis_list+' => '该应用方案包含的所有配置项',
|
||||
'Class:ApplicationSolution/Attribute:businessprocess_list' => '业务流程',
|
||||
'Class:ApplicationSolution/Attribute:businessprocess_list+' => 'All the business processes depending on this application solution',
|
||||
'Class:ApplicationSolution/Attribute:businessprocess_list+' => '所有依赖该应用方案的业务流程',
|
||||
'Class:ApplicationSolution/Attribute:status' => '状态',
|
||||
'Class:ApplicationSolution/Attribute:status+' => '',
|
||||
'Class:ApplicationSolution/Attribute:status/Value:active' => '启用',
|
||||
@@ -724,7 +724,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:BusinessProcess' => '业务流程',
|
||||
'Class:BusinessProcess+' => '',
|
||||
'Class:BusinessProcess/Attribute:applicationsolutions_list' => '应用方案',
|
||||
'Class:BusinessProcess/Attribute:applicationsolutions_list+' => 'All the application solutions that impact this business process',
|
||||
'Class:BusinessProcess/Attribute:applicationsolutions_list+' => '所有影响该业务流程的应用方案',
|
||||
'Class:BusinessProcess/Attribute:status' => '状态',
|
||||
'Class:BusinessProcess/Attribute:status+' => '',
|
||||
'Class:BusinessProcess/Attribute:status/Value:active' => '启用',
|
||||
@@ -912,11 +912,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Farm' => '集群',
|
||||
'Class:Farm+' => '',
|
||||
'Class:Farm/Attribute:hypervisor_list' => 'Hypervisor',
|
||||
'Class:Farm/Attribute:hypervisor_list+' => '集群由哪些 Hypervisor 组成',
|
||||
'Class:Farm/Attribute:hypervisor_list+' => '集群由哪些Hypervisor 组成',
|
||||
'Class:Farm/Attribute:redundancy' => '高可用性',
|
||||
'Class:Farm/Attribute:redundancy/disabled' => '所有 Hypervisor 正常,集群才正常',
|
||||
'Class:Farm/Attribute:redundancy/count' => '至少 %1$s 个 Hypervisor 是正常的,集群才是正常的',
|
||||
'Class:Farm/Attribute:redundancy/percent' => '至少 %1$s %% 的 Hypervisor 是正常的,集群才正常',
|
||||
'Class:Farm/Attribute:redundancy/disabled' => '所有Hypervisor 正常,集群才正常',
|
||||
'Class:Farm/Attribute:redundancy/count' => '至少 %1$s 个Hypervisor 是正常的,集群才是正常的',
|
||||
'Class:Farm/Attribute:redundancy/percent' => '至少 %1$s %% 的Hypervisor 是正常的,集群才正常',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -930,15 +930,15 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:VirtualMachine/Attribute:virtualhost_id+' => '',
|
||||
'Class:VirtualMachine/Attribute:virtualhost_name' => '名称',
|
||||
'Class:VirtualMachine/Attribute:virtualhost_name+' => '',
|
||||
'Class:VirtualMachine/Attribute:osfamily_id' => 'OS家族',
|
||||
'Class:VirtualMachine/Attribute:osfamily_id' => '操作系统家族',
|
||||
'Class:VirtualMachine/Attribute:osfamily_id+' => '',
|
||||
'Class:VirtualMachine/Attribute:osfamily_name' => '名称',
|
||||
'Class:VirtualMachine/Attribute:osfamily_name+' => '',
|
||||
'Class:VirtualMachine/Attribute:osversion_id' => 'OS版本',
|
||||
'Class:VirtualMachine/Attribute:osversion_id' => '操作系统版本',
|
||||
'Class:VirtualMachine/Attribute:osversion_id+' => '',
|
||||
'Class:VirtualMachine/Attribute:osversion_name' => '名称',
|
||||
'Class:VirtualMachine/Attribute:osversion_name+' => '',
|
||||
'Class:VirtualMachine/Attribute:oslicence_id' => 'OS许可证',
|
||||
'Class:VirtualMachine/Attribute:oslicence_id' => '操作系统许可证',
|
||||
'Class:VirtualMachine/Attribute:oslicence_id+' => '',
|
||||
'Class:VirtualMachine/Attribute:oslicence_name' => '名称',
|
||||
'Class:VirtualMachine/Attribute:oslicence_name+' => '',
|
||||
@@ -1098,7 +1098,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Software/Attribute:type/Value:DBServer' => '数据库服务器',
|
||||
'Class:Software/Attribute:type/Value:DBServer+' => 'DB Server',
|
||||
'Class:Software/Attribute:type/Value:Middleware' => '中间件',
|
||||
'Class:Software/Attribute:type/Value:Middleware+' => 'Middleware',
|
||||
'Class:Software/Attribute:type/Value:Middleware+' => '中间件',
|
||||
'Class:Software/Attribute:type/Value:OtherSoftware' => '其它软件',
|
||||
'Class:Software/Attribute:type/Value:OtherSoftware+' => '其它软件',
|
||||
'Class:Software/Attribute:type/Value:PCSoftware' => 'PC 软件',
|
||||
@@ -1126,7 +1126,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Patch/Attribute:documents_list+' => '该补丁关联的所有文档',
|
||||
'Class:Patch/Attribute:description' => '描述',
|
||||
'Class:Patch/Attribute:description+' => '',
|
||||
'Class:Patch/Attribute:finalclass' => 'Patch sub-class',
|
||||
'Class:Patch/Attribute:finalclass' => '补丁子类别',
|
||||
'Class:Patch/Attribute:finalclass+' => 'Name of the final class',
|
||||
));
|
||||
|
||||
@@ -1135,11 +1135,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:OSPatch' => 'OS 补丁',
|
||||
'Class:OSPatch' => '操作系统补丁',
|
||||
'Class:OSPatch+' => '',
|
||||
'Class:OSPatch/Attribute:functionalcis_list' => '设备',
|
||||
'Class:OSPatch/Attribute:functionalcis_list+' => '已安装该补丁的所有系统',
|
||||
'Class:OSPatch/Attribute:osversion_id' => 'OS 版本',
|
||||
'Class:OSPatch/Attribute:osversion_id' => '操作系统版本',
|
||||
'Class:OSPatch/Attribute:osversion_id+' => '',
|
||||
'Class:OSPatch/Attribute:osversion_name' => '名称',
|
||||
'Class:OSPatch/Attribute:osversion_name+' => '',
|
||||
@@ -1188,10 +1188,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Licence/Attribute:perpetual' => '永久有效',
|
||||
'Class:Licence/Attribute:perpetual+' => '',
|
||||
'Class:Licence/Attribute:perpetual/Value:no' => '否',
|
||||
'Class:Licence/Attribute:perpetual/Value:no+' => 'no',
|
||||
'Class:Licence/Attribute:perpetual/Value:no+' => '否',
|
||||
'Class:Licence/Attribute:perpetual/Value:yes' => '是',
|
||||
'Class:Licence/Attribute:perpetual/Value:yes+' => 'yes',
|
||||
'Class:Licence/Attribute:finalclass' => 'Licence sub-class',
|
||||
'Class:Licence/Attribute:perpetual/Value:yes+' => '是',
|
||||
'Class:Licence/Attribute:finalclass' => '许可证子类别',
|
||||
'Class:Licence/Attribute:finalclass+' => 'Name of the final class',
|
||||
));
|
||||
|
||||
@@ -1200,9 +1200,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:OSLicence' => 'OS 许可证',
|
||||
'Class:OSLicence' => '操作系统许可证',
|
||||
'Class:OSLicence+' => '',
|
||||
'Class:OSLicence/Attribute:osversion_id' => 'OS 版本',
|
||||
'Class:OSLicence/Attribute:osversion_id' => '操作系统版本',
|
||||
'Class:OSLicence/Attribute:osversion_id+' => '',
|
||||
'Class:OSLicence/Attribute:osversion_name' => '名称',
|
||||
'Class:OSLicence/Attribute:osversion_name+' => '',
|
||||
@@ -1217,7 +1217,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:SoftwareLicence' => 'Software Licence',
|
||||
'Class:SoftwareLicence' => '软件许可证',
|
||||
'Class:SoftwareLicence+' => '',
|
||||
'Class:SoftwareLicence/Attribute:software_id' => '软件',
|
||||
'Class:SoftwareLicence/Attribute:software_id+' => '',
|
||||
@@ -1253,7 +1253,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Typology+' => '',
|
||||
'Class:Typology/Attribute:name' => '名称',
|
||||
'Class:Typology/Attribute:name+' => '',
|
||||
'Class:Typology/Attribute:finalclass' => 'Typology sub-class',
|
||||
'Class:Typology/Attribute:finalclass' => '拓扑子类别',
|
||||
'Class:Typology/Attribute:finalclass+' => 'Name of the final class',
|
||||
));
|
||||
|
||||
@@ -1262,9 +1262,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:OSVersion' => 'OS 版本',
|
||||
'Class:OSVersion' => '操作系统版本',
|
||||
'Class:OSVersion+' => '',
|
||||
'Class:OSVersion/Attribute:osfamily_id' => 'OS家族',
|
||||
'Class:OSVersion/Attribute:osfamily_id' => '操作系统家族',
|
||||
'Class:OSVersion/Attribute:osfamily_id+' => '',
|
||||
'Class:OSVersion/Attribute:osfamily_name' => '名称',
|
||||
'Class:OSVersion/Attribute:osfamily_name+' => '',
|
||||
@@ -1275,7 +1275,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:OSFamily' => 'OS家族',
|
||||
'Class:OSFamily' => '操作系统家族',
|
||||
'Class:OSFamily+' => '',
|
||||
));
|
||||
|
||||
@@ -1293,7 +1293,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:ContactType' => '合同类型',
|
||||
'Class:ContactType' => '联系人类型',
|
||||
'Class:ContactType+' => '',
|
||||
));
|
||||
|
||||
@@ -1306,8 +1306,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Brand+' => '',
|
||||
'Class:Brand/Attribute:physicaldevices_list' => '物理设备',
|
||||
'Class:Brand/Attribute:physicaldevices_list+' => '该品牌的所有物理设备',
|
||||
'Class:Brand/UniquenessRule:name+' => 'The name must be unique~~',
|
||||
'Class:Brand/UniquenessRule:name' => 'This brand already exists~~',
|
||||
'Class:Brand/UniquenessRule:name+' => '名称必须唯一',
|
||||
'Class:Brand/UniquenessRule:name' => '该品牌已存在',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -1361,8 +1361,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Model/Attribute:type/Value:Phone+' => '电话',
|
||||
'Class:Model/Attribute:physicaldevices_list' => '物理设备',
|
||||
'Class:Model/Attribute:physicaldevices_list+' => '该型号的所有物理设备',
|
||||
'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+' => '名称必须唯一',
|
||||
'Class:Model/UniquenessRule:name_brand' => '该型号已存在',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -1428,11 +1428,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:lnkFunctionalCIToOSPatch' => '链接 功能项 / OS 补丁',
|
||||
'Class:lnkFunctionalCIToOSPatch' => '链接 功能项 / 操作系统补丁',
|
||||
'Class:lnkFunctionalCIToOSPatch+' => '',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => 'OS 补丁',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => '操作系统补丁',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id+' => '',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => 'OS 补丁名称',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => '操作系统补丁名称',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name+' => '',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id' => '功能项',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id+' => '',
|
||||
@@ -1505,10 +1505,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Subnet/Attribute:org_id' => '所属组织',
|
||||
'Class:Subnet/Attribute:org_id+' => '',
|
||||
'Class:Subnet/Attribute:org_name' => '名称',
|
||||
'Class:Subnet/Attribute:org_name+' => 'Common name',
|
||||
'Class:Subnet/Attribute:org_name+' => '名称',
|
||||
'Class:Subnet/Attribute:ip' => 'IP',
|
||||
'Class:Subnet/Attribute:ip+' => '',
|
||||
'Class:Subnet/Attribute:ip_mask' => 'IP 掩码',
|
||||
'Class:Subnet/Attribute:ip_mask' => '掩码',
|
||||
'Class:Subnet/Attribute:ip_mask+' => '',
|
||||
'Class:Subnet/Attribute:vlans_list' => 'VLAN',
|
||||
'Class:Subnet/Attribute:vlans_list+' => '',
|
||||
@@ -1563,7 +1563,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:NetworkInterface+' => '',
|
||||
'Class:NetworkInterface/Attribute:name' => '名称',
|
||||
'Class:NetworkInterface/Attribute:name+' => '',
|
||||
'Class:NetworkInterface/Attribute:finalclass' => 'NetworkInterface sub-class',
|
||||
'Class:NetworkInterface/Attribute:finalclass' => '网卡子类别',
|
||||
'Class:NetworkInterface/Attribute:finalclass+' => 'Name of the final class',
|
||||
));
|
||||
|
||||
@@ -1681,9 +1681,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type' => '连接类型',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type+' => '',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink' => '下联',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink+' => 'down link',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink+' => '下联',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink' => '上联',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink+' => 'up link',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink+' => '上联',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -1802,88 +1802,88 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Menu:DataAdministration' => '数据管理',
|
||||
'Menu:DataAdministration+' => '数据管理',
|
||||
'Menu:Catalogs' => '类别',
|
||||
'Menu:Catalogs+' => '数据类型',
|
||||
'Menu:Audit' => '审计',
|
||||
'Menu:Audit+' => '审计',
|
||||
'Menu:CSVImport' => 'CSV 导入',
|
||||
'Menu:CSVImport+' => '批量创建或更新',
|
||||
'Menu:Organization' => '组织',
|
||||
'Menu:Organization+' => '所有组织',
|
||||
'Menu:Application' => '应用',
|
||||
'Menu:Application+' => '所有应用',
|
||||
'Menu:DBServer' => '数据库服务器',
|
||||
'Menu:DBServer+' => '数据库服务器',
|
||||
'Menu:ConfigManagement' => '配置管理',
|
||||
'Menu:ConfigManagement+' => '配置管理',
|
||||
'Menu:ConfigManagementOverview' => '概览',
|
||||
'Menu:ConfigManagementOverview+' => '概览',
|
||||
'Menu:Contact' => '联系人',
|
||||
'Menu:Contact+' => '联系人',
|
||||
'Menu:Contact:Count' => '%1$d 个联系人',
|
||||
'Menu:Person' => '个体',
|
||||
'Menu:Person+' => '所有个体',
|
||||
'Menu:Team' => '团队',
|
||||
'Menu:Team+' => '所有团队',
|
||||
'Menu:Document' => '文档',
|
||||
'Menu:Document+' => '所有文档',
|
||||
'Menu:Location' => '地理位置',
|
||||
'Menu:DataAdministration' => '数据管理',
|
||||
'Menu:DataAdministration+' => '数据管理',
|
||||
'Menu:Catalogs' => '类别',
|
||||
'Menu:Catalogs+' => '数据类型',
|
||||
'Menu:Audit' => '审计',
|
||||
'Menu:Audit+' => '审计',
|
||||
'Menu:CSVImport' => 'CSV 导入',
|
||||
'Menu:CSVImport+' => '批量创建或更新',
|
||||
'Menu:Organization' => '组织',
|
||||
'Menu:Organization+' => '所有组织',
|
||||
'Menu:Application' => '应用',
|
||||
'Menu:Application+' => '所有应用',
|
||||
'Menu:DBServer' => '数据库服务器',
|
||||
'Menu:DBServer+' => '数据库服务器',
|
||||
'Menu:ConfigManagement' => '配置管理',
|
||||
'Menu:ConfigManagement+' => '配置管理',
|
||||
'Menu:ConfigManagementOverview' => '概览',
|
||||
'Menu:ConfigManagementOverview+' => '概览',
|
||||
'Menu:Contact' => '联系人',
|
||||
'Menu:Contact+' => '联系人',
|
||||
'Menu:Contact:Count' => '%1$d 个联系人',
|
||||
'Menu:Person' => '个体',
|
||||
'Menu:Person+' => '所有个体',
|
||||
'Menu:Team' => '团队',
|
||||
'Menu:Team+' => '所有团队',
|
||||
'Menu:Document' => '文档',
|
||||
'Menu:Document+' => '所有文档',
|
||||
'Menu:Location' => '地理位置',
|
||||
|
||||
'Menu:Location+' => '所有位置',
|
||||
'Menu:ConfigManagementCI' => '配置项',
|
||||
'Menu:ConfigManagementCI+' => '配置项',
|
||||
'Menu:BusinessProcess' => '业务流程',
|
||||
'Menu:BusinessProcess+' => '所有业务流程',
|
||||
'Menu:ApplicationSolution' => '应用方案',
|
||||
'Menu:ApplicationSolution+' => '所有应用方案',
|
||||
'Menu:ConfigManagementSoftware' => '应用管理',
|
||||
'Menu:Licence' => '许可证',
|
||||
'Menu:Licence+' => '所有许可证',
|
||||
'Menu:Patch' => '补丁',
|
||||
'Menu:Patch+' => '所有补丁',
|
||||
'Menu:ApplicationInstance' => '已安装的软件',
|
||||
'Menu:ApplicationInstance+' => '应用和数据库服务器',
|
||||
'Menu:ConfigManagementHardware' => '基础设施管理',
|
||||
'Menu:Subnet' => '子网',
|
||||
'Menu:Subnet+' => '所有子网',
|
||||
'Menu:NetworkDevice' => '网络设备',
|
||||
'Menu:NetworkDevice+' => '所有网络设备',
|
||||
'Menu:Server' => '服务器',
|
||||
'Menu:Server+' => '所有服务器',
|
||||
'Menu:Printer' => '打印机',
|
||||
'Menu:Printer+' => '所有打印机',
|
||||
'Menu:MobilePhone' => '移动电话',
|
||||
'Menu:MobilePhone+' => '所有移动电话',
|
||||
'Menu:PC' => '个人电脑',
|
||||
'Menu:PC+' => '所有个人电脑',
|
||||
'Menu:NewContact' => '新建联系人',
|
||||
'Menu:NewContact+' => '新建联系人',
|
||||
'Menu:SearchContacts' => '搜索联系人',
|
||||
'Menu:SearchContacts+' => '搜索联系人',
|
||||
'Menu:NewCI' => '新建配置项',
|
||||
'Menu:NewCI+' => 'New CI',
|
||||
'Menu:SearchCIs' => '搜索配置项',
|
||||
'Menu:SearchCIs+' => '搜索配置项',
|
||||
'Menu:ConfigManagement:Devices' => '设备',
|
||||
'Menu:ConfigManagement:AllDevices' => '基础设施',
|
||||
'Menu:ConfigManagement:virtualization' => '虚拟化',
|
||||
'Menu:ConfigManagement:EndUsers' => '终端设备',
|
||||
'Menu:ConfigManagement:SWAndApps' => '软件和应用',
|
||||
'Menu:ConfigManagement:Misc' => '杂项',
|
||||
'Menu:Group' => '配置组',
|
||||
'Menu:Group+' => '配置组',
|
||||
'Menu:ConfigManagement:Shortcuts' => '快捷方式',
|
||||
'Menu:ConfigManagement:AllContacts' => '所有联系人: %1$d',
|
||||
'Menu:Typology' => '配置管理',
|
||||
'Menu:Typology+' => '配置管理',
|
||||
'Menu:OSVersion' => 'OS 版本',
|
||||
'Menu:OSVersion+' => '',
|
||||
'Menu:Software' => '软件清单',
|
||||
'Menu:Software+' => '软件清单',
|
||||
'UI_WelcomeMenu_AllConfigItems' => '摘要',
|
||||
'Menu:ConfigManagement:Typology' => '配置管理',
|
||||
'Menu:Location+' => '所有位置',
|
||||
'Menu:ConfigManagementCI' => '配置项',
|
||||
'Menu:ConfigManagementCI+' => '配置项',
|
||||
'Menu:BusinessProcess' => '业务流程',
|
||||
'Menu:BusinessProcess+' => '所有业务流程',
|
||||
'Menu:ApplicationSolution' => '应用方案',
|
||||
'Menu:ApplicationSolution+' => '所有应用方案',
|
||||
'Menu:ConfigManagementSoftware' => '应用管理',
|
||||
'Menu:Licence' => '许可证',
|
||||
'Menu:Licence+' => '所有许可证',
|
||||
'Menu:Patch' => '补丁',
|
||||
'Menu:Patch+' => '所有补丁',
|
||||
'Menu:ApplicationInstance' => '已安装的软件',
|
||||
'Menu:ApplicationInstance+' => '应用和数据库服务器',
|
||||
'Menu:ConfigManagementHardware' => '基础设施管理',
|
||||
'Menu:Subnet' => '子网',
|
||||
'Menu:Subnet+' => '所有子网',
|
||||
'Menu:NetworkDevice' => '网络设备',
|
||||
'Menu:NetworkDevice+' => '所有网络设备',
|
||||
'Menu:Server' => '服务器',
|
||||
'Menu:Server+' => '所有服务器',
|
||||
'Menu:Printer' => '打印机',
|
||||
'Menu:Printer+' => '所有打印机',
|
||||
'Menu:MobilePhone' => '移动电话',
|
||||
'Menu:MobilePhone+' => '所有移动电话',
|
||||
'Menu:PC' => '个人电脑',
|
||||
'Menu:PC+' => '所有个人电脑',
|
||||
'Menu:NewContact' => '新建联系人',
|
||||
'Menu:NewContact+' => '新建联系人',
|
||||
'Menu:SearchContacts' => '搜索联系人',
|
||||
'Menu:SearchContacts+' => '搜索联系人',
|
||||
'Menu:NewCI' => '新建配置项',
|
||||
'Menu:NewCI+' => '新建配置项',
|
||||
'Menu:SearchCIs' => '搜索配置项',
|
||||
'Menu:SearchCIs+' => '搜索配置项',
|
||||
'Menu:ConfigManagement:Devices' => '设备',
|
||||
'Menu:ConfigManagement:AllDevices' => '基础设施',
|
||||
'Menu:ConfigManagement:virtualization' => '虚拟化',
|
||||
'Menu:ConfigManagement:EndUsers' => '终端设备',
|
||||
'Menu:ConfigManagement:SWAndApps' => '软件和应用',
|
||||
'Menu:ConfigManagement:Misc' => '杂项',
|
||||
'Menu:Group' => '配置组',
|
||||
'Menu:Group+' => '配置组',
|
||||
'Menu:ConfigManagement:Shortcuts' => '快捷方式',
|
||||
'Menu:ConfigManagement:AllContacts' => '所有联系人: %1$d',
|
||||
'Menu:Typology' => '配置管理',
|
||||
'Menu:Typology+' => '配置管理',
|
||||
'Menu:OSVersion' => 'OS 版本',
|
||||
'Menu:OSVersion+' => '',
|
||||
'Menu:Software' => '软件清单',
|
||||
'Menu:Software+' => '软件清单',
|
||||
'UI_WelcomeMenu_AllConfigItems' => '摘要',
|
||||
'Menu:ConfigManagement:Typology' => '配置管理',
|
||||
|
||||
));
|
||||
|
||||
@@ -1891,18 +1891,18 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
// Add translation for Fieldsets
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Server:baseinfo' => '基本信息',
|
||||
'Server:Date' => '日期',
|
||||
'Server:moreinfo' => '更多信息',
|
||||
'Server:otherinfo' => '其它信息',
|
||||
'Server:power' => '电力供应',
|
||||
'Person:info' => '基本信息',
|
||||
'Person:personal_info' => '个人信息',
|
||||
'Person:notifiy' => '通知',
|
||||
'Class:Subnet/Tab:IPUsage' => 'IP 使用率',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => '网卡IP范围: <em>%1$s</em> 到 <em>%2$s</em>',
|
||||
'Class:Subnet/Tab:FreeIPs' => '空闲 IP',
|
||||
'Class:Subnet/Tab:FreeIPs-count' => '空闲 IP: %1$s',
|
||||
'Class:Subnet/Tab:FreeIPs-explain' => '以下是抽取的10个空闲IP',
|
||||
'Class:Document:PreviewTab' => '预览',
|
||||
'Server:baseinfo' => '基本信息',
|
||||
'Server:Date' => '日期',
|
||||
'Server:moreinfo' => '更多信息',
|
||||
'Server:otherinfo' => '其它信息',
|
||||
'Server:power' => '电力供应',
|
||||
'Person:info' => '基本信息',
|
||||
'Person:personal_info' => '个人信息',
|
||||
'Person:notifiy' => '通知',
|
||||
'Class:Subnet/Tab:IPUsage' => 'IP 使用率',
|
||||
'Class:Subnet/Tab:IPUsage-explain' => '网卡IP范围: <em>%1$s</em> 到 <em>%2$s</em>',
|
||||
'Class:Subnet/Tab:FreeIPs' => '空闲 IP',
|
||||
'Class:Subnet/Tab:FreeIPs-count' => '空闲 IP: %1$s',
|
||||
'Class:Subnet/Tab:FreeIPs-explain' => '以下是抽取的10个空闲IP',
|
||||
'Class:Document:PreviewTab' => '预览',
|
||||
));
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
|
||||
'Menu:ConfigEditor' => '配置文件编辑',
|
||||
'Menu:ConfigEditor' => '编辑配置文件',
|
||||
'config-edit-title' => '配置文件编辑器',
|
||||
'config-edit-intro' => '编辑配置文件时请格外小心.',
|
||||
'config-edit-intro' => '编辑配置文件时请务必格外小心.',
|
||||
'config-apply' => '应用',
|
||||
'config-apply-title' => '应用 (Ctrl+S)',
|
||||
'config-cancel' => '重置',
|
||||
|
||||
@@ -24,21 +24,21 @@
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:iTopHub' => 'iTop Hub',
|
||||
'Menu:iTopHub:Register' => '进入 iTop Hub ',
|
||||
'Menu:iTopHub:Register+' => '进入 iTop Hub 更新您的组件',
|
||||
'Menu:iTopHub:Register:Description' => '<p>进入 iTop Hub 社区平台!</br>寻找您想要的内容和信息, 管理本机扩展或安装新的扩展.</br><br/>通过这个页面连接到iTop Hub, 本机的信息也会被推送到 iTop Hub 上.</p>',
|
||||
'Menu:iTopHub:Register' => '进入iTop Hub ',
|
||||
'Menu:iTopHub:Register+' => '进入iTop Hub 更新您的组件',
|
||||
'Menu:iTopHub:Register:Description' => '<p>进入iTop Hub 社区平台!</br>寻找您想要的内容和信息, 管理本机扩展或安装新的扩展.</br><br/>通过这个页面连接到iTop Hub, 本机的信息也会被推送到 iTop Hub 上.</p>',
|
||||
'Menu:iTopHub:MyExtensions' => '已安装的扩展',
|
||||
'Menu:iTopHub:MyExtensions+' => '查看本机已安装的扩展',
|
||||
'Menu:iTopHub:BrowseExtensions' => '从 iTop Hub 获取扩展',
|
||||
'Menu:iTopHub:BrowseExtensions+' => '去 iTop Hub 浏览更多的扩展',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>进入 iTop Hub 商店, 一站式查找各式各样 iTop 扩展的地方 !</br>寻找符合您要求的扩展.</br><br/>通过这个页面连接到iTop Hub, 本机的信息也会被推送到 iTop Hub 上.</p>',
|
||||
'iTopHub:GoBtn' => '进入 iTop Hub',
|
||||
'Menu:iTopHub:BrowseExtensions' => '从iTop Hub 获取扩展',
|
||||
'Menu:iTopHub:BrowseExtensions+' => '去iTop Hub 浏览更多的扩展',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>进入iTop Hub 商店, 一站式查找各种iTop 扩展的地方 !</br>寻找符合您要求的扩展.</br><br/>通过这个页面连接到iTop Hub, 本机的信息也会被推送到 iTop Hub 上.</p>',
|
||||
'iTopHub:GoBtn' => '进入iTop Hub',
|
||||
'iTopHub:CloseBtn' => '关闭',
|
||||
'iTopHub:GoBtn:Tooltip' => '跳到 www.itophub.io',
|
||||
'iTopHub:OpenInNewWindow' => '从新窗口打开 iTop Hub',
|
||||
'iTopHub:AutoSubmit' => '不再询问. 下次自动进入 iTop Hub .',
|
||||
'iTopHub:OpenInNewWindow' => '从新窗口打开iTop Hub',
|
||||
'iTopHub:AutoSubmit' => '不再询问. 下次自动进入iTop Hub .',
|
||||
'UI:About:RemoteExtensionSource' => 'iTop Hub',
|
||||
'iTopHub:Explanation' => '点击这个按钮您将被引导至 iTop Hub.',
|
||||
'iTopHub:Explanation' => '点击这个按钮您将被引导至iTop Hub.',
|
||||
|
||||
'iTopHub:BackupFreeDiskSpaceIn' => '%1$s free disk space in %2$s.',
|
||||
'iTopHub:FailedToCheckFreeDiskSpace' => '检查空闲的磁盘空间失败.',
|
||||
@@ -46,24 +46,24 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'iTopHub:BackupFailed' => '备份失败!',
|
||||
'iTopHub:Landing:Status' => '安装状态',
|
||||
'iTopHub:Landing:Install' => '扩展安装进行中...',
|
||||
'iTopHub:CompiledOK' => 'Compilation successful.',
|
||||
'iTopHub:CompiledOK' => '编译成功.',
|
||||
'iTopHub:ConfigurationSafelyReverted' => '安装时发生错误!<br/>iTop 配置将不会改变.',
|
||||
|
||||
'iTopHub:InstalledExtensions' => '本机已安装的扩展',
|
||||
'iTopHub:ExtensionCategory:Manual' => '手动安装的扩展',
|
||||
'iTopHub:ExtensionCategory:Manual+' => '下列已安装的扩展是手动将文件放置到 %1$s 目录的:',
|
||||
'iTopHub:ExtensionCategory:Remote' => '从 iTop Hub 安装的扩展',
|
||||
'iTopHub:ExtensionCategory:Remote+' => '下列已安装的扩展是来自 iTop Hub:',
|
||||
'iTopHub:NoExtensionInThisCategory' => '尚未安装扩展.<br/><br/>浏览 iTop Hub ,去寻找符合您要求的扩展.',
|
||||
'iTopHub:ExtensionCategory:Remote' => '从iTop Hub 安装的扩展',
|
||||
'iTopHub:ExtensionCategory:Remote+' => '下列已安装的扩展是来自iTop Hub:',
|
||||
'iTopHub:NoExtensionInThisCategory' => '尚未安装扩展.<br/><br/>浏览iTop Hub ,去寻找符合您要求的扩展.',
|
||||
'iTopHub:ExtensionNotInstalled' => '未安装',
|
||||
'iTopHub:GetMoreExtensions' => '从 iTop Hub 获取扩展...',
|
||||
'iTopHub:GetMoreExtensions' => '从iTop Hub 获取扩展...',
|
||||
|
||||
'iTopHub:LandingWelcome' => '恭喜! 下列来自 iTop Hub 的扩展已被下载并安装到本机.',
|
||||
'iTopHub:GoBackToITopBtn' => '返回 iTop',
|
||||
'iTopHub:LandingWelcome' => '恭喜! 下列来自iTop Hub 的扩展已被下载并安装到本机.',
|
||||
'iTopHub:GoBackToITopBtn' => '返回iTop',
|
||||
'iTopHub:Uncompressing' => '扩展解压中...',
|
||||
'iTopHub:InstallationWelcome' => '安装来自 iTop Hub 的扩展',
|
||||
'iTopHub:InstallationWelcome' => '安装来自iTop Hub 的扩展',
|
||||
'iTopHub:DBBackupLabel' => '本机备份',
|
||||
'iTopHub:DBBackupSentence' => '在升级之前,备份数据库和 iTop 配置文件',
|
||||
'iTopHub:DBBackupSentence' => '在升级之前,备份数据库和iTop 配置文件',
|
||||
'iTopHub:DeployBtn' => '安装 !',
|
||||
'iTopHub:DatabaseBackupProgress' => '本机备份...',
|
||||
|
||||
|
||||
@@ -1725,7 +1725,7 @@
|
||||
</class>
|
||||
<class id="Organization">
|
||||
<fields>
|
||||
<field id="overview" xsi:type="AttributeDashboard">
|
||||
<field id="overview" xsi:type="AttributeDashboard" _delta="if_exists">
|
||||
<definition>
|
||||
<cells>
|
||||
<cell id="9000" _delta="delete">
|
||||
|
||||
@@ -1747,7 +1747,7 @@
|
||||
</class>
|
||||
<class id="Organization">
|
||||
<fields>
|
||||
<field id="overview" xsi:type="AttributeDashboard">
|
||||
<field id="overview" xsi:type="AttributeDashboard" _delta="if_exists">
|
||||
<definition>
|
||||
<cells>
|
||||
<cell id="9000" _delta="delete">
|
||||
|
||||
@@ -33,46 +33,46 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Core:AttributeLinkedSet' => '对象数组',
|
||||
'Core:AttributeLinkedSet+' => 'Any kind of objects of the same class or subclass',
|
||||
|
||||
'Core:AttributeDashboard' => 'Dashboard~~',
|
||||
'Core:AttributeDashboard' => '面板',
|
||||
'Core:AttributeDashboard+' => '~~',
|
||||
|
||||
'Core:AttributePhoneNumber' => 'Phone number~~',
|
||||
'Core:AttributePhoneNumber' => '电话号码',
|
||||
'Core:AttributePhoneNumber+' => '~~',
|
||||
|
||||
'Core:AttributeObsolescenceDate' => 'Obsolescence date~~',
|
||||
'Core:AttributeObsolescenceDate' => '报废日期',
|
||||
'Core:AttributeObsolescenceDate+' => '~~',
|
||||
|
||||
'Core:AttributeTagSet' => 'List of tags~~',
|
||||
'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' => '清单',
|
||||
'Core:AttributeTagSet+' => '',
|
||||
'Core:AttributeSet:placeholder' => '请点击这里添加',
|
||||
'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:AttributeCaseLog' => 'Log~~',
|
||||
'Core:AttributeCaseLog+' => '~~',
|
||||
'Core:AttributeCaseLog' => '日志',
|
||||
'Core:AttributeCaseLog+' => '',
|
||||
|
||||
'Core:AttributeMetaEnum' => 'Computed enum~~',
|
||||
'Core:AttributeMetaEnum+' => '~~',
|
||||
'Core:AttributeMetaEnum' => 'Computed enum~~',
|
||||
'Core:AttributeMetaEnum+' => '~~',
|
||||
|
||||
'Core:AttributeLinkedSetIndirect' => 'Array of objects (N-N)',
|
||||
'Core:AttributeLinkedSetIndirect' => '对象数组(N-N)',
|
||||
'Core:AttributeLinkedSetIndirect+' => 'Any kind of objects [subclass] of the same class',
|
||||
|
||||
'Core:AttributeInteger' => '整数',
|
||||
'Core:AttributeInteger+' => 'Numeric value (could be negative)',
|
||||
'Core:AttributeInteger+' => '整数值(可以为负)',
|
||||
|
||||
'Core:AttributeDecimal' => 'Decimal',
|
||||
'Core:AttributeDecimal+' => 'Decimal value (could be negative)',
|
||||
'Core:AttributeDecimal' => '小数',
|
||||
'Core:AttributeDecimal+' => '小数(可以为负)',
|
||||
|
||||
'Core:AttributeBoolean' => '布尔',
|
||||
'Core:AttributeBoolean+' => 'Boolean',
|
||||
'Core:AttributeBoolean+' => '布尔',
|
||||
'Core:AttributeBoolean/Value:null' => '',
|
||||
'Core:AttributeBoolean/Value:yes' => '是',
|
||||
'Core:AttributeBoolean/Value:no' => '否',
|
||||
|
||||
'Core:AttributeArchiveFlag' => '是否归档',
|
||||
'Core:AttributeArchiveFlag/Value:yes' => '是',
|
||||
'Core:AttributeArchiveFlag/Value:yes+' => 'This object is visible only in archive mode',
|
||||
'Core:AttributeArchiveFlag/Value:yes+' => '该对象仅在归档模式可见',
|
||||
'Core:AttributeArchiveFlag/Value:no' => '否',
|
||||
'Core:AttributeArchiveFlag/Label' => '已归档',
|
||||
'Core:AttributeArchiveFlag/Label+' => '',
|
||||
@@ -89,13 +89,13 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Core:AttributeObsolescenceDate/Label+' => 'Approximative date at which the object has been considered obsolete',
|
||||
|
||||
'Core:AttributeString' => '字符串',
|
||||
'Core:AttributeString+' => 'Alphanumeric string',
|
||||
'Core:AttributeString+' => '字符串',
|
||||
|
||||
'Core:AttributeClass' => '类',
|
||||
'Core:AttributeClass+' => 'Class',
|
||||
'Core:AttributeClass+' => '类别',
|
||||
|
||||
'Core:AttributeApplicationLanguage' => '用户语言',
|
||||
'Core:AttributeApplicationLanguage+' => 'Language and country (EN US)',
|
||||
'Core:AttributeApplicationLanguage+' => '语言和国家地区(EN US)',
|
||||
|
||||
'Core:AttributeFinalClass' => '类 (auto)',
|
||||
'Core:AttributeFinalClass+' => 'Real class of the object (automatically created by the core)',
|
||||
@@ -126,11 +126,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Core:AttributeEnum' => 'Enum',
|
||||
'Core:AttributeEnum+' => 'List of predefined alphanumeric strings',
|
||||
|
||||
'Core:AttributeTemplateString' => 'Template string',
|
||||
'Core:AttributeTemplateString+' => 'String containing placeholders',
|
||||
'Core:AttributeTemplateString' => '字符模板',
|
||||
'Core:AttributeTemplateString+' => '包含占位符的字符串',
|
||||
|
||||
'Core:AttributeTemplateText' => '文字模板',
|
||||
'Core:AttributeTemplateText+' => 'Text containing placeholders',
|
||||
'Core:AttributeTemplateText+' => '包含占位符的文本',
|
||||
|
||||
'Core:AttributeTemplateHTML' => 'HTML 模板',
|
||||
'Core:AttributeTemplateHTML+' => 'HTML containing placeholders',
|
||||
@@ -169,7 +169,7 @@ Operators:<br/>
|
||||
</p>',
|
||||
|
||||
'Core:AttributeDeadline' => '截止日期',
|
||||
'Core:AttributeDeadline+' => 'Date, displayed relatively to the current time',
|
||||
'Core:AttributeDeadline+' => '日期, 显示与当前的相对时间',
|
||||
|
||||
'Core:AttributeExternalKey' => '外键',
|
||||
'Core:AttributeExternalKey+' => 'External (or foreign) key',
|
||||
@@ -184,10 +184,10 @@ Operators:<br/>
|
||||
'Core:AttributeURL+' => 'Absolute or relative URL as a text string',
|
||||
|
||||
'Core:AttributeBlob' => 'Blob',
|
||||
'Core:AttributeBlob+' => 'Any binary content (document)',
|
||||
'Core:AttributeBlob+' => '任何二进制内容(文档)',
|
||||
|
||||
'Core:AttributeOneWayPassword' => 'One way password',
|
||||
'Core:AttributeOneWayPassword+' => 'One way encrypted (hashed) password',
|
||||
'Core:AttributeOneWayPassword' => '单向密码',
|
||||
'Core:AttributeOneWayPassword+' => '单向加密(或哈希) 的密码',
|
||||
|
||||
'Core:AttributeTable' => 'Table',
|
||||
'Core:AttributeTable+' => 'Indexed array having two dimensions',
|
||||
@@ -199,10 +199,10 @@ Operators:<br/>
|
||||
'Core:AttributeFriendlyName+' => 'Attribute created automatically ; the friendly name is computed after several attributes',
|
||||
|
||||
'Core:FriendlyName-Label' => '全称',
|
||||
'Core:FriendlyName-Description' => 'Full name',
|
||||
'Core:FriendlyName-Description' => '全称',
|
||||
|
||||
'Core:AttributeTag' => 'Tags~~',
|
||||
'Core:AttributeTag+' => 'Tags~~',
|
||||
'Core:AttributeTag' => '标签',
|
||||
'Core:AttributeTag+' => '标签',
|
||||
));
|
||||
|
||||
|
||||
@@ -279,12 +279,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChangeOpSetAttributeScalar' => '属性变更',
|
||||
'Class:CMDBChangeOpSetAttributeScalar+' => 'Object scalar properties change tracking',
|
||||
'Class:CMDBChangeOpSetAttributeScalar' => '属性更改跟踪',
|
||||
'Class:CMDBChangeOpSetAttributeScalar+' => '对象属性更改跟踪',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:oldvalue' => '旧值',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:oldvalue+' => 'previous value of the attribute',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:oldvalue+' => '以前该属性的值',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:newvalue' => '新值',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:newvalue+' => 'new value of the attribute',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:newvalue+' => '属性的新值',
|
||||
));
|
||||
// Used by CMDBChangeOp... & derived classes
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
@@ -307,10 +307,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChangeOpSetAttributeBlob' => '数据修改',
|
||||
'Class:CMDBChangeOpSetAttributeBlob+' => 'data change tracking',
|
||||
'Class:CMDBChangeOpSetAttributeBlob' => '数据变更跟踪',
|
||||
'Class:CMDBChangeOpSetAttributeBlob+' => '数据变更跟踪',
|
||||
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata' => '之前的值',
|
||||
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata+' => 'previous contents of the attribute',
|
||||
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata+' => '该数据之前的内容',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -318,10 +318,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChangeOpSetAttributeText' => '文本修改',
|
||||
'Class:CMDBChangeOpSetAttributeText+' => '跟踪文本修改',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata' => 'Previous data',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata+' => 'previous contents of the attribute',
|
||||
'Class:CMDBChangeOpSetAttributeText' => '文本变更跟踪',
|
||||
'Class:CMDBChangeOpSetAttributeText+' => '文本变更跟踪',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata' => '旧值',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata+' => '该文本之前的内容',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -330,14 +330,14 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Event' => '日志事件',
|
||||
'Class:Event+' => 'An application internal event',
|
||||
'Class:Event+' => '应用程序的内部事件',
|
||||
'Class:Event/Attribute:message' => '消息',
|
||||
'Class:Event/Attribute:message+' => 'short description of the event',
|
||||
'Class:Event/Attribute:date' => '日期',
|
||||
'Class:Event/Attribute:date+' => 'date and time at which the changes have been recorded',
|
||||
'Class:Event/Attribute:date+' => '记录的日期和时间',
|
||||
'Class:Event/Attribute:userinfo' => '用户信息',
|
||||
'Class:Event/Attribute:userinfo+' => 'identification of the user that was doing the action that triggered this event',
|
||||
'Class:Event/Attribute:finalclass' => 'Event sub-class',
|
||||
'Class:Event/Attribute:finalclass' => '事件子类别',
|
||||
'Class:Event/Attribute:finalclass+' => 'Name of the final class',
|
||||
));
|
||||
|
||||
@@ -496,7 +496,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:ActionEmail' => '邮件通知',
|
||||
'Class:ActionEmail+' => '',
|
||||
'Class:ActionEmail/Attribute:test_recipient' => 'Test recipient',
|
||||
'Class:ActionEmail/Attribute:test_recipient' => '测试收件人',
|
||||
'Class:ActionEmail/Attribute:test_recipient+' => 'Detination in case status is set to "Test"',
|
||||
'Class:ActionEmail/Attribute:from' => '发件人',
|
||||
'Class:ActionEmail/Attribute:from+' => 'Will be sent into the email header',
|
||||
@@ -505,15 +505,15 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:ActionEmail/Attribute:to' => '收件人',
|
||||
'Class:ActionEmail/Attribute:to+' => 'Destination of the email',
|
||||
'Class:ActionEmail/Attribute:cc' => '抄送',
|
||||
'Class:ActionEmail/Attribute:cc+' => 'Carbon Copy',
|
||||
'Class:ActionEmail/Attribute:cc+' => '明文抄送',
|
||||
'Class:ActionEmail/Attribute:bcc' => '密抄',
|
||||
'Class:ActionEmail/Attribute:bcc+' => 'Blind Carbon Copy',
|
||||
'Class:ActionEmail/Attribute:bcc+' => '加密抄送',
|
||||
'Class:ActionEmail/Attribute:subject' => '主题',
|
||||
'Class:ActionEmail/Attribute:subject+' => 'Title of the email',
|
||||
'Class:ActionEmail/Attribute:subject+' => '邮件主题',
|
||||
'Class:ActionEmail/Attribute:body' => '正文',
|
||||
'Class:ActionEmail/Attribute:body+' => 'Contents of the email',
|
||||
'Class:ActionEmail/Attribute:body+' => '邮件内容',
|
||||
'Class:ActionEmail/Attribute:importance' => '重要性',
|
||||
'Class:ActionEmail/Attribute:importance+' => 'Importance flag',
|
||||
'Class:ActionEmail/Attribute:importance+' => '重要性标记',
|
||||
'Class:ActionEmail/Attribute:importance/Value:low' => '低',
|
||||
'Class:ActionEmail/Attribute:importance/Value:low+' => '低',
|
||||
'Class:ActionEmail/Attribute:importance/Value:normal' => '普通',
|
||||
@@ -530,10 +530,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Trigger' => '触发器',
|
||||
'Class:Trigger+' => 'Custom event handler',
|
||||
'Class:Trigger/Attribute:description' => '描述',
|
||||
'Class:Trigger/Attribute:description+' => 'one line description',
|
||||
'Class:Trigger/Attribute:description+' => '一行描述',
|
||||
'Class:Trigger/Attribute:action_list' => '触发的行为',
|
||||
'Class:Trigger/Attribute:action_list+' => 'Actions performed when the trigger is activated',
|
||||
'Class:Trigger/Attribute:finalclass' => 'Trigger sub-class',
|
||||
'Class:Trigger/Attribute:finalclass' => '触发器子类别',
|
||||
'Class:Trigger/Attribute:finalclass+' => 'Name of the final class',
|
||||
));
|
||||
|
||||
@@ -604,7 +604,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:TriggerOnObjectDelete' => 'Trigger (on object deletion)~~',
|
||||
'Class:TriggerOnObjectDelete' => '触发器 (对象删除时)',
|
||||
'Class:TriggerOnObjectDelete+' => 'Trigger on object deletion of [a child class of] the given class~~',
|
||||
));
|
||||
|
||||
@@ -613,7 +613,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:TriggerOnObjectUpdate' => 'Trigger (on object update)~~',
|
||||
'Class:TriggerOnObjectUpdate' => '触发器 (对象更新时)',
|
||||
'Class:TriggerOnObjectUpdate+' => 'Trigger on object update of [a child class of] the given class~~',
|
||||
'Class:TriggerOnObjectUpdate/Attribute:target_attcodes' => 'Target fields~~',
|
||||
'Class:TriggerOnObjectUpdate/Attribute:target_attcodes+' => '~~',
|
||||
@@ -626,7 +626,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:TriggerOnThresholdReached' => '触发器 (基于阀值)',
|
||||
'Class:TriggerOnThresholdReached+' => '当达到某个阀值时触发',
|
||||
'Class:TriggerOnThresholdReached/Attribute:stop_watch_code' => 'Stop watch',
|
||||
'Class:TriggerOnThresholdReached/Attribute:stop_watch_code' => '秒表',
|
||||
'Class:TriggerOnThresholdReached/Attribute:stop_watch_code+' => '',
|
||||
'Class:TriggerOnThresholdReached/Attribute:threshold_index' => '阀值',
|
||||
'Class:TriggerOnThresholdReached/Attribute:threshold_index+' => '',
|
||||
@@ -660,7 +660,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:SynchroDataSource/Attribute:description' => '描述',
|
||||
'Class:SynchroDataSource/Attribute:status' => '状态',
|
||||
'Class:SynchroDataSource/Attribute:scope_class' => '目标类',
|
||||
'Class:SynchroDataSource/Attribute:user_id' => 'User',
|
||||
'Class:SynchroDataSource/Attribute:user_id' => '用户',
|
||||
'Class:SynchroDataSource/Attribute:notify_contact_id' => '要通知的人',
|
||||
'Class:SynchroDataSource/Attribute:notify_contact_id+' => 'Contact to notify in case of error',
|
||||
'Class:SynchroDataSource/Attribute:url_icon' => '图标的超链接',
|
||||
@@ -777,7 +777,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChangeOpSetAttributeCaseLog' => 'Case Log',
|
||||
'Class:CMDBChangeOpSetAttributeCaseLog/Attribute:lastentry' => 'Last Entry',
|
||||
'Class:SynchroDataSource' => '同步数据源',
|
||||
'Class:SynchroDataSource/Attribute:status/Value:implementation' => 'Implementation',
|
||||
'Class:SynchroDataSource/Attribute:status/Value:implementation' => '上线',
|
||||
'Class:SynchroDataSource/Attribute:status/Value:obsolete' => '废弃',
|
||||
'Class:SynchroDataSource/Attribute:status/Value:production' => '生产',
|
||||
'Class:SynchroDataSource/Attribute:scope_restriction' => '范围限制',
|
||||
@@ -801,13 +801,13 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:SynchroDataSource/Attribute:user_delete_policy/Value:nobody' => 'Nobody',
|
||||
'Class:SynchroAttribute' => '同步属性',
|
||||
'Class:SynchroAttribute/Attribute:sync_source_id' => '同步数据源',
|
||||
'Class:SynchroAttribute/Attribute:attcode' => 'Attribute Code',
|
||||
'Class:SynchroAttribute/Attribute:attcode' => '属性代码',
|
||||
'Class:SynchroAttribute/Attribute:update' => '更新',
|
||||
'Class:SynchroAttribute/Attribute:reconcile' => 'Reconcile',
|
||||
'Class:SynchroAttribute/Attribute:update_policy' => '更新策略',
|
||||
'Class:SynchroAttribute/Attribute:update_policy/Value:master_locked' => '加锁',
|
||||
'Class:SynchroAttribute/Attribute:update_policy/Value:master_unlocked' => '解锁',
|
||||
'Class:SynchroAttribute/Attribute:update_policy/Value:write_if_empty' => 'Initialize if empty',
|
||||
'Class:SynchroAttribute/Attribute:update_policy/Value:write_if_empty' => '如果为空则初始化',
|
||||
'Class:SynchroAttribute/Attribute:finalclass' => 'Class',
|
||||
'Class:SynchroAttExtKey' => 'Synchro Attribute (ExtKey)',
|
||||
'Class:SynchroAttExtKey/Attribute:reconciliation_attcode' => 'Reconciliation Attribute',
|
||||
@@ -952,15 +952,15 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
|
||||
'Class:TagSetFieldData/Attribute:code' => 'Code~~',
|
||||
'Class:TagSetFieldData/Attribute:code+' => 'Internal code. Must contain at least 3 alphanumeric characters~~',
|
||||
'Class:TagSetFieldData/Attribute:label' => 'Label~~',
|
||||
'Class:TagSetFieldData/Attribute:label+' => 'Displayed label~~',
|
||||
'Class:TagSetFieldData/Attribute:description' => 'Description~~',
|
||||
'Class:TagSetFieldData/Attribute:description+' => 'Description~~',
|
||||
'Class:TagSetFieldData/Attribute:label' => '标签',
|
||||
'Class:TagSetFieldData/Attribute:label+' => '显示的标签',
|
||||
'Class:TagSetFieldData/Attribute:description' => '描述',
|
||||
'Class:TagSetFieldData/Attribute:description+' => '描述',
|
||||
'Class:TagSetFieldData/Attribute:finalclass' => 'Tag class~~~~',
|
||||
'Class:TagSetFieldData/Attribute:obj_class' => 'Object class~~~~',
|
||||
'Class:TagSetFieldData/Attribute:obj_attcode' => 'Field code~~~~',
|
||||
|
||||
'Core:TagSetFieldData:ErrorDeleteUsedTag' => 'Used tags cannot be deleted~~',
|
||||
'Core:TagSetFieldData:ErrorDeleteUsedTag' => '已使用的标签无法删除',
|
||||
'Core:TagSetFieldData:ErrorDuplicateTagCodeOrLabel' => 'Tags codes or labels must be unique~~',
|
||||
'Core:TagSetFieldData:ErrorTagCodeSyntax' => 'Tags code must contain between 3 and %1$d alphanumeric characters, starting with a letter.~~',
|
||||
'Core:TagSetFieldData:ErrorTagCodeReservedWord' => 'The chosen tag code is a reserved word~~',
|
||||
@@ -976,63 +976,63 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
// Class: DBProperty
|
||||
//
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:DBProperty' => 'DB property~~',
|
||||
'Class:DBProperty' => 'DB 属性',
|
||||
'Class:DBProperty+' => '~~',
|
||||
'Class:DBProperty/Attribute:name' => 'Name~~',
|
||||
'Class:DBProperty/Attribute:name+' => '~~',
|
||||
'Class:DBProperty/Attribute:description' => 'Description~~',
|
||||
'Class:DBProperty/Attribute:description+' => '~~',
|
||||
'Class:DBProperty/Attribute:value' => 'Value~~',
|
||||
'Class:DBProperty/Attribute:value+' => '~~',
|
||||
'Class:DBProperty/Attribute:change_date' => 'Change date~~',
|
||||
'Class:DBProperty/Attribute:change_date+' => '~~',
|
||||
'Class:DBProperty/Attribute:change_comment' => 'Change comment~~',
|
||||
'Class:DBProperty/Attribute:change_comment+' => '~~',
|
||||
'Class:DBProperty/Attribute:name' => '名称',
|
||||
'Class:DBProperty/Attribute:name+' => '',
|
||||
'Class:DBProperty/Attribute:description' => '描述',
|
||||
'Class:DBProperty/Attribute:description+' => '',
|
||||
'Class:DBProperty/Attribute:value' => '值',
|
||||
'Class:DBProperty/Attribute:value+' => '',
|
||||
'Class:DBProperty/Attribute:change_date' => '修改日期',
|
||||
'Class:DBProperty/Attribute:change_date+' => '',
|
||||
'Class:DBProperty/Attribute:change_comment' => '备注',
|
||||
'Class:DBProperty/Attribute:change_comment+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: BackgroundTask
|
||||
//
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:BackgroundTask' => 'Background task~~',
|
||||
'Class:BackgroundTask' => '后台任务',
|
||||
'Class:BackgroundTask+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:class_name' => 'Class name~~',
|
||||
'Class:BackgroundTask/Attribute:class_name+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:first_run_date' => 'First run date~~',
|
||||
'Class:BackgroundTask/Attribute:first_run_date' => '首次运行时间',
|
||||
'Class:BackgroundTask/Attribute:first_run_date+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:latest_run_date' => 'Latest run date~~',
|
||||
'Class:BackgroundTask/Attribute:latest_run_date' => '最近运行时间',
|
||||
'Class:BackgroundTask/Attribute:latest_run_date+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:next_run_date' => 'Next run date~~',
|
||||
'Class:BackgroundTask/Attribute:next_run_date' => '下次运行时间',
|
||||
'Class:BackgroundTask/Attribute:next_run_date+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:total_exec_count' => 'Total exec. count~~',
|
||||
'Class:BackgroundTask/Attribute:total_exec_count' => '一共执行的次数',
|
||||
'Class:BackgroundTask/Attribute:total_exec_count+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:latest_run_duration' => 'Latest run duration~~',
|
||||
'Class:BackgroundTask/Attribute:latest_run_duration' => '最近运行时长',
|
||||
'Class:BackgroundTask/Attribute:latest_run_duration+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:min_run_duration' => 'Min. run duration~~',
|
||||
'Class:BackgroundTask/Attribute:min_run_duration' => '最少运行时长',
|
||||
'Class:BackgroundTask/Attribute:min_run_duration+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:max_run_duration' => 'Max. run duration~~',
|
||||
'Class:BackgroundTask/Attribute:max_run_duration' => '最多运行时长',
|
||||
'Class:BackgroundTask/Attribute:max_run_duration+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:average_run_duration' => 'Average run duration~~',
|
||||
'Class:BackgroundTask/Attribute:average_run_duration' => '平均运行时长',
|
||||
'Class:BackgroundTask/Attribute:average_run_duration+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:running' => 'Running~~',
|
||||
'Class:BackgroundTask/Attribute:running+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:status' => 'Status~~',
|
||||
'Class:BackgroundTask/Attribute:status+' => '~~',
|
||||
'Class:BackgroundTask/Attribute:running' => '运行中',
|
||||
'Class:BackgroundTask/Attribute:running+' => '',
|
||||
'Class:BackgroundTask/Attribute:status' => '状态',
|
||||
'Class:BackgroundTask/Attribute:status+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: AsyncTask
|
||||
//
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:AsyncTask' => 'Async. task~~',
|
||||
'Class:AsyncTask+' => '~~',
|
||||
'Class:AsyncTask/Attribute:created' => 'Created~~',
|
||||
'Class:AsyncTask/Attribute:created+' => '~~',
|
||||
'Class:AsyncTask/Attribute:started' => 'Started~~',
|
||||
'Class:AsyncTask/Attribute:started+' => '~~',
|
||||
'Class:AsyncTask/Attribute:planned' => 'Planned~~',
|
||||
'Class:AsyncTask/Attribute:planned+' => '~~',
|
||||
'Class:AsyncTask/Attribute:event_id' => 'Event~~',
|
||||
'Class:AsyncTask' => '异步任务',
|
||||
'Class:AsyncTask+' => '',
|
||||
'Class:AsyncTask/Attribute:created' => '已创建',
|
||||
'Class:AsyncTask/Attribute:created+' => '',
|
||||
'Class:AsyncTask/Attribute:started' => '已开始',
|
||||
'Class:AsyncTask/Attribute:started+' => '',
|
||||
'Class:AsyncTask/Attribute:planned' => '已计划',
|
||||
'Class:AsyncTask/Attribute:planned+' => '',
|
||||
'Class:AsyncTask/Attribute:event_id' => '事件',
|
||||
'Class:AsyncTask/Attribute:event_id+' => '~~',
|
||||
'Class:AsyncTask/Attribute:finalclass' => 'Final class~~',
|
||||
'Class:AsyncTask/Attribute:finalclass+' => '~~',
|
||||
|
||||
@@ -64,7 +64,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:TagSetFieldData/Attribute:obj_class' => 'Object class~~',
|
||||
'Class:TagSetFieldData/Attribute:obj_attcode' => 'Field code~~',
|
||||
'Class:AuditRule/Attribute:query' => '要运行的查询',
|
||||
'Class:AuditRule/Attribute:query+' => '要运行的OQL表达式',
|
||||
'Class:AuditRule/Attribute:query+' => '要运行的OQL 表达式',
|
||||
'Class:AuditRule/Attribute:valid_flag' => '是否有效?',
|
||||
'Class:AuditRule/Attribute:valid_flag+' => '若规则返回有效对象则True,否则False',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:true' => 'true',
|
||||
@@ -83,13 +83,13 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Query' => '查询',
|
||||
'Class:Query+' => 'A query is a data set defined in a dynamic way',
|
||||
'Class:Query+' => '查询是一种动态的数据集',
|
||||
'Class:Query/Attribute:name' => '名称',
|
||||
'Class:Query/Attribute:name+' => 'Identifies the query',
|
||||
'Class:Query/Attribute:name+' => '查询的名称',
|
||||
'Class:Query/Attribute:description' => '描述',
|
||||
'Class:Query/Attribute:description+' => 'Long description for the query (purpose, usage, etc.)',
|
||||
'Class:QueryOQL/Attribute:fields' => 'Fields~~',
|
||||
'Class:QueryOQL/Attribute:fields+' => 'Coma separated list of attributes (or alias.attribute) to export~~',
|
||||
'Class:Query/Attribute:description+' => '请描述本查询 (目的、用法等等.)',
|
||||
'Class:QueryOQL/Attribute:fields' => '区域',
|
||||
'Class:QueryOQL/Attribute:fields+' => '属性之间使用逗号分隔 (or alias.attribute) to export~~',
|
||||
'Class:QueryOQL' => 'OQL 查询',
|
||||
'Class:QueryOQL+' => 'A query based on the Object Query Language',
|
||||
'Class:QueryOQL/Attribute:oql' => '表达式',
|
||||
@@ -137,12 +137,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
|
||||
'Class:User/Error:LoginMustBeUnique' => '登录名必须唯一 - "%1s" 已经被使用.',
|
||||
'Class:User/Error:AtLeastOneProfileIsNeeded' => '必须指定至少一个角色给该用户.',
|
||||
'Class:User/Error:AtLeastOneOrganizationIsNeeded' => 'At least one organization must be assigned to this user.',
|
||||
'Class:User/Error:OrganizationNotAllowed' => 'Organization not allowed.',
|
||||
'Class:User/Error:UserOrganizationNotAllowed' => 'The user account does not belong to your allowed organizations.',
|
||||
'Class:User/Error:PersonIsMandatory' => 'The Contact is mandatory.~~',
|
||||
'Class:User/Error:AtLeastOneOrganizationIsNeeded' => '必须为该用户指定一个组织.',
|
||||
'Class:User/Error:OrganizationNotAllowed' => '该组织不被允许.',
|
||||
'Class:User/Error:UserOrganizationNotAllowed' => '该用户账户不属于那个组织.',
|
||||
'Class:User/Error:PersonIsMandatory' => '联系人必填.',
|
||||
'Class:UserInternal' => '内部用户',
|
||||
'Class:UserInternal+' => 'User defined within iTop',
|
||||
'Class:UserInternal+' => 'iTop 内部定义的用户',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -317,14 +317,14 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
// Class: UserDashboard
|
||||
//
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:UserDashboard' => 'User dashboard~~',
|
||||
'Class:UserDashboard+' => '~~',
|
||||
'Class:UserDashboard/Attribute:user_id' => 'User~~',
|
||||
'Class:UserDashboard/Attribute:user_id+' => '~~',
|
||||
'Class:UserDashboard/Attribute:menu_code' => 'Menu code~~',
|
||||
'Class:UserDashboard/Attribute:menu_code+' => '~~',
|
||||
'Class:UserDashboard/Attribute:contents' => 'Contents~~',
|
||||
'Class:UserDashboard/Attribute:contents+' => '~~',
|
||||
'Class:UserDashboard' => '用户面板',
|
||||
'Class:UserDashboard+' => '',
|
||||
'Class:UserDashboard/Attribute:user_id' => '用户',
|
||||
'Class:UserDashboard/Attribute:user_id+' => '',
|
||||
'Class:UserDashboard/Attribute:menu_code' => '菜单代码',
|
||||
'Class:UserDashboard/Attribute:menu_code+' => '',
|
||||
'Class:UserDashboard/Attribute:contents' => '内容',
|
||||
'Class:UserDashboard/Attribute:contents+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -352,30 +352,30 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Menu:WelcomeMenuPage+' => '欢迎使用iTop', // Duplicated into itop-welcome-itil (will be removed from here...)
|
||||
'UI:WelcomeMenu:Title' => '欢迎使用iTop',
|
||||
|
||||
'UI:WelcomeMenu:LeftBlock' => '<p>iTop是完全开源的IT操作门户.</p>
|
||||
'UI:WelcomeMenu:LeftBlock' => '<p>iTop 是完全开源的IT 操作门户.</p>
|
||||
<ul>它包括:
|
||||
<li>完整的CMDB(Configuration management database),用于登记和管理您的IT资产.</li>
|
||||
<li>事件管理模块用于跟踪和传递所有发生在IT系统中的事件.</li>
|
||||
<li>变更管理模块用于规划和跟踪IT环境中发生的变化.</li>
|
||||
<li>完整的CMDB(Configuration management database),用于登记和管理您的IT 资产.</li>
|
||||
<li>事件管理模块用于跟踪和传递所有发生在IT 系统中的事件.</li>
|
||||
<li>变更管理模块用于规划和跟踪IT 环境中发生的变化.</li>
|
||||
<li>已知错误数据库可加速事件的处理.</li>
|
||||
<li>停机模块记录所有计划内的停机并通知对应的联系人.</li>
|
||||
<li>通过仪表盘迅速获得IT状态的概况.</li>
|
||||
<li>通过仪表盘迅速获得IT 状态的概况.</li>
|
||||
</ul>
|
||||
<p>所有模块可以各自独立地、一步步地部署.</p>',
|
||||
|
||||
'UI:WelcomeMenu:RightBlock' => '<p>iTop是面向服务供应商的, 它使得IT工程师能够更方便地管理多客户和多组织.
|
||||
'UI:WelcomeMenu:RightBlock' => '<p>iTop 是面向服务供应商的, 它使得IT 工程师能够更方便地管理多客户和多组织.
|
||||
<ul>iTop 提供功能丰富的业务处理流程:
|
||||
<li>提高IT管理效率</li>
|
||||
<li>提升IT可操作能力</li>
|
||||
<li>提高IT 管理效率</li>
|
||||
<li>提升IT 可操作能力</li>
|
||||
<li>提高用户满意度,提升业务能力.</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>iTop是完全开放的,可被集成到现有的IT管理架构之中.</p>
|
||||
<p>iTop 是完全开放的,可被集成到现有的IT 管理架构之中.</p>
|
||||
<p>
|
||||
<ul>利用这个新一代的IT操作门户, 可以帮助您:
|
||||
<li>更好地管理越来越复杂的IT环境.</li>
|
||||
<li>逐步实现ITIL流程.</li>
|
||||
<li>管理IT中最重要的资产: 文档.</li>
|
||||
<ul>利用这个新一代的IT 操作门户, 可以帮助您:
|
||||
<li>更好地管理越来越复杂的IT 环境.</li>
|
||||
<li>逐步实现ITIL 流程.</li>
|
||||
<li>管理IT 中最重要的资产: 文档.</li>
|
||||
</ul>
|
||||
</p>',
|
||||
'UI:WelcomeMenu:AllOpenRequests' => '所有打开的需求: %1$d',
|
||||
@@ -516,7 +516,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:SelectOne' => '-- 请选择 --',
|
||||
'UI:Login:Welcome' => '欢迎使用iTop!',
|
||||
'UI:Login:IncorrectLoginPassword' => '用户名或密码错误, 请重试.',
|
||||
'UI:Login:IdentifyYourself' => '在登录之前,请完成身份认证',
|
||||
'UI:Login:IdentifyYourself' => '请完成身份认证',
|
||||
'UI:Login:UserNamePrompt' => '用户名',
|
||||
'UI:Login:PasswordPrompt' => '密码',
|
||||
'UI:Login:ForgotPwd' => '忘记密码?',
|
||||
@@ -609,13 +609,14 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:CSVImport:CommentsAndHeader' => '注释和头',
|
||||
'UI:CSVImport:SelectClass' => '选择要导入的类别:',
|
||||
'UI:CSVImport:AdvancedMode' => '高级模式',
|
||||
'UI:CSVImport:AdvancedMode+' => '在高级模式中,对象的"id" (主键) 可以被用来修改和重命名对象.不管怎样,列 "id" (如果存在) 只能被用做一个搜索条件,不能与其它搜索条件混用.',
|
||||
'UI:CSVImport:SelectAClassFirst' => '首先选择一个类以配置映射.',
|
||||
'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' => '要配置映射,请先选择一个类.',
|
||||
'UI:CSVImport:HeaderFields' => '栏目',
|
||||
'UI:CSVImport:HeaderMappings' => '映射',
|
||||
'UI:CSVImport:HeaderSearch' => '搜索?',
|
||||
'UI:CSVImport:AlertIncompleteMapping' => '请为每个栏选择一个映射.',
|
||||
'UI:CSVImport:AlertMultipleMapping' => 'Please make sure that a target field is mapped only once.',
|
||||
'UI:CSVImport:AlertMultipleMapping' => '请确保目标区域仅被映射一次.',
|
||||
'UI:CSVImport:AlertNoSearchCriteria' => '请选择至少一个搜索条件',
|
||||
'UI:CSVImport:Encoding' => '字符编码',
|
||||
'UI:UniversalSearchTitle' => 'iTop - 全局搜索',
|
||||
@@ -904,28 +905,28 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI-ConfigurationManagementMenu-InfraByType' => '按类别划分基础架构对象',
|
||||
'UI-ConfigurationManagementMenu-InfraByStatus' => '按状态划分基础架构对象',
|
||||
|
||||
'UI:ConfigMgmtMenuOverview:Title' => '配置管理仪表盘',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIbyStatus' => '按状态配置项目',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIByType' => '按类别配置项目',
|
||||
'UI:ConfigMgmtMenuOverview:Title' => '配置管理仪表盘',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIbyStatus' => '按状态配置项目',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIByType' => '按类别配置项目',
|
||||
|
||||
'UI:RequestMgmtMenuOverview:Title' => '需求管理仪表盘',
|
||||
'UI-RequestManagementOverview-RequestByService' => '按服务划分用户需求',
|
||||
'UI-RequestManagementOverview-RequestByPriority' => '按优先级划分用户需求',
|
||||
'UI-RequestManagementOverview-RequestUnassigned' => '尚未分配给办理人的用户需求',
|
||||
'UI:RequestMgmtMenuOverview:Title' => '需求管理仪表盘',
|
||||
'UI-RequestManagementOverview-RequestByService' => '按服务划分用户需求',
|
||||
'UI-RequestManagementOverview-RequestByPriority' => '按优先级划分用户需求',
|
||||
'UI-RequestManagementOverview-RequestUnassigned' => '尚未分配给办理人的用户需求',
|
||||
|
||||
'UI:IncidentMgmtMenuOverview:Title' => '事件管理仪表盘',
|
||||
'UI-IncidentManagementOverview-IncidentByService' => '按服务级划分事件',
|
||||
'UI-IncidentManagementOverview-IncidentByPriority' => '按优先级划分事件',
|
||||
'UI-IncidentManagementOverview-IncidentUnassigned' => '尚未分配给办理人的事件',
|
||||
'UI:IncidentMgmtMenuOverview:Title' => '事件管理仪表盘',
|
||||
'UI-IncidentManagementOverview-IncidentByService' => '按服务级划分事件',
|
||||
'UI-IncidentManagementOverview-IncidentByPriority' => '按优先级划分事件',
|
||||
'UI-IncidentManagementOverview-IncidentUnassigned' => '尚未分配给办理人的事件',
|
||||
|
||||
'UI:ChangeMgmtMenuOverview:Title' => '变更管理仪表盘',
|
||||
'UI-ChangeManagementOverview-ChangeByType' => '按类别划分变更',
|
||||
'UI-ChangeManagementOverview-ChangeUnassigned' => '尚未分配给办理人的变更',
|
||||
'UI-ChangeManagementOverview-ChangeWithOutage' => '变更引起的停机',
|
||||
'UI:ChangeMgmtMenuOverview:Title' => '变更管理仪表盘',
|
||||
'UI-ChangeManagementOverview-ChangeByType' => '按类别划分变更',
|
||||
'UI-ChangeManagementOverview-ChangeUnassigned' => '尚未分配给办理人的变更',
|
||||
'UI-ChangeManagementOverview-ChangeWithOutage' => '变更引起的停机',
|
||||
|
||||
'UI:ServiceMgmtMenuOverview:Title' => '服务管理仪表盘',
|
||||
'UI-ServiceManagementOverview-CustomerContractToRenew' => '客户合同需在30日内更新',
|
||||
'UI-ServiceManagementOverview-ProviderContractToRenew' => '供应商合同需在30日内更新',
|
||||
'UI:ServiceMgmtMenuOverview:Title' => '服务管理仪表盘',
|
||||
'UI-ServiceManagementOverview-CustomerContractToRenew' => '客户合同需在30日内更新',
|
||||
'UI-ServiceManagementOverview-ProviderContractToRenew' => '供应商合同需在30日内更新',
|
||||
|
||||
'UI:ContactsMenu' => '联系人',
|
||||
'UI:ContactsMenu+' => '联系人',
|
||||
@@ -948,13 +949,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:NotificationsMenu:Title' => '配置 <span class="hilite">通知</span>',
|
||||
'UI:NotificationsMenu:Help' => '帮助',
|
||||
'UI:NotificationsMenu:HelpContent' => '<p>在iTop 中, 通知可以被自定义. 它们是基于两个对象集: <i>触发器和操作</i>.</p>
|
||||
<p><i><b>触发器</b></i> 定义了什么时候通知将被发送. 有3种触发器, 覆盖了对象生命周期的3个阶段:
|
||||
<p><i><b>触发器</b></i> 定义了什么时候发送通知. iTop core 自带一些触发器, 另一些触发器可由扩展提供:
|
||||
<ol>
|
||||
<li> "当对象创建时" ,即对象创建时会触发的操作.</li>
|
||||
<li> "进入指定状态时" ,即对象变为指定状态之前触发的操作(状态从一个变为另一个)</li>
|
||||
<li> "离开指定状态时" ,即对象的指定状态转变成其它状态时触发的操作</li>
|
||||
<li> "基于阀值" ,即对象的TTR 或 TTO 达到某个阀值时</li>
|
||||
<li> "当对象更新时" ,即工单发生变化时触发的操作</li>
|
||||
<li>Some triggers are executed when an object of the specified class is <b>created</b>, <b>updated</b> or <b>deleted</b>.</li>
|
||||
<li>Some triggers are executed when an object of a given class <b>enter</b> or <b>leave</b> a specified </b>state</b>.</li>
|
||||
<li>Some triggers are executed when a <b>threshold on TTO or TTR</b> has been <b>reached</b>.</li>
|
||||
</ol>
|
||||
</p>
|
||||
<p>
|
||||
@@ -972,11 +971,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:NotificationsMenu:Actions' => '操作',
|
||||
'UI:NotificationsMenu:AvailableActions' => '有效的操作',
|
||||
|
||||
'Menu:TagAdminMenu' => 'Tags configuration~~',
|
||||
'Menu:TagAdminMenu+' => 'Tags values management~~',
|
||||
'UI:TagAdminMenu:Title' => 'Tags configuration~~',
|
||||
'UI:TagAdminMenu:NoTags' => 'No Tag field configured~~',
|
||||
'UI:TagSetFieldData:Error' => 'Error: %1$s~~',
|
||||
'Menu:TagAdminMenu' => '标签配置',
|
||||
'Menu:TagAdminMenu+' => '标签值管理',
|
||||
'UI:TagAdminMenu:Title' => '标签配置',
|
||||
'UI:TagAdminMenu:NoTags' => '未配置标签',
|
||||
'UI:TagSetFieldData:Error' => '错误: %1$s',
|
||||
|
||||
'Menu:AuditCategories' => '审计类别', // Duplicated into itop-welcome-itil (will be removed from here...)
|
||||
'Menu:AuditCategories+' => '审计类别', // Duplicated into itop-welcome-itil (will be removed from here...)
|
||||
@@ -1005,8 +1004,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Menu:UserAccountsMenu+' => '用户帐户', // Duplicated into itop-welcome-itil (will be removed from here...)
|
||||
'Menu:UserAccountsMenu:Title' => '用户帐户', // Duplicated into itop-welcome-itil (will be removed from here...)
|
||||
|
||||
'UI:iTopVersion:Short' => 'iTop-CN version %1$s',
|
||||
'UI:iTopVersion:Long' => 'iTop-CN version %1$s-%2$s built on %3$s by Purple_Grape',
|
||||
'UI:iTopVersion:Short' => '%1$s version %2$s',
|
||||
'UI:iTopVersion:Long' => '%1$s version %2$s-%3$s built on %4$s',
|
||||
'UI:PropertiesTab' => '属性',
|
||||
|
||||
'UI:OpenDocumentInNewWindow_' => '在新窗口打开文档: %1$s',
|
||||
@@ -1015,7 +1014,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:Download-CSV' => '下载 %1$s',
|
||||
|
||||
'UI:DeadlineMissedBy_duration' => '超过 %1$s',
|
||||
'UI:Deadline_LessThan1Min' => '< 1 min',
|
||||
'UI:Deadline_LessThan1Min' => '< 1 分钟',
|
||||
'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',
|
||||
@@ -1131,7 +1130,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:ArchiveMode:Banner' => '归档模式',
|
||||
'UI:ArchiveMode:Banner+' => '已归档的对象可见但不允许修改',
|
||||
'UI:FavoriteOrganizations' => '快速访问',
|
||||
'UI:FavoriteOrganizations+' => '为了能够通过首页左侧菜单快速访问,请检查下面的组织列表. 请注意,这并不是一个安全设置, 其他组织的对象依然可以通过选择 "所有组织" 下拉列表看到.',
|
||||
'UI:FavoriteOrganizations+' => '进入组织下的列表,可实现通过下拉菜单快速访问.'.
|
||||
'请注意,这并不是一个安全设置, 其他组织的对象依然可以通过选择 "所有组织" 下拉列表看到.',
|
||||
'UI:FavoriteLanguage' => '用户界面',
|
||||
'UI:Favorites:SelectYourLanguage' => '选择语言',
|
||||
'UI:FavoriteOtherSettings' => '其他设置',
|
||||
@@ -1147,13 +1147,13 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:Button:Refresh' => '刷新',
|
||||
'UI:Button:GoPrint' => '打印...',
|
||||
'UI:ExplainPrintable' => '点击 %1$s 图标可隐藏打印内容.<br/>在打印之前可使用浏览器的 "打印预览" 功能.<br/>注: 这个页首和其他控制面板不会被打印.',
|
||||
'UI:PrintResolution:FullSize' => 'Full size~~',
|
||||
'UI:PrintResolution:A4Portrait' => 'A4 Portrait~~',
|
||||
'UI:PrintResolution:A4Landscape' => 'A4 Landscape~~',
|
||||
'UI:PrintResolution:FullSize' => '全尺寸',
|
||||
'UI:PrintResolution:A4Portrait' => 'A4 纵向',
|
||||
'UI:PrintResolution:A4Landscape' => 'A4 横向',
|
||||
'UI:PrintResolution:LetterPortrait' => 'Letter Portrait~~',
|
||||
'UI:PrintResolution:LetterLandscape' => 'Letter Landscape~~',
|
||||
'UI:Toggle:StandardDashboard' => 'Standard~~',
|
||||
'UI:Toggle:CustomDashboard' => 'Custom~~',
|
||||
'UI:Toggle:StandardDashboard' => '标准',
|
||||
'UI:Toggle:CustomDashboard' => '自定义',
|
||||
|
||||
'UI:ConfigureThisList' => '配置这个列表...',
|
||||
'UI:ListConfigurationTitle' => '列表配置',
|
||||
@@ -1201,16 +1201,16 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:Form:Property' => '属性',
|
||||
'UI:Form:Value' => '值',
|
||||
|
||||
'UI:DashletUnknown:Label' => 'Unknown',
|
||||
'UI:DashletUnknown:Label' => '未知',
|
||||
'UI:DashletUnknown:Description' => 'Unknown dashlet (might have been uninstalled)',
|
||||
'UI:DashletUnknown:RenderText:View' => 'Unable to render this dashlet.',
|
||||
'UI:DashletUnknown:RenderText:Edit' => 'Unable to render this dashlet (class "%1$s"). Check with your administrator if it is still available.',
|
||||
'UI:DashletUnknown:RenderNoDataText:Edit' => 'No preview available for this dashlet (class "%1$s").',
|
||||
'UI:DashletUnknown:Prop-XMLConfiguration' => '配置 (显示为纯 XML)',
|
||||
|
||||
'UI:DashletProxy:Label' => 'Proxy',
|
||||
'UI:DashletProxy:Label' => '代理',
|
||||
'UI:DashletProxy:Description' => 'Proxy dashlet',
|
||||
'UI:DashletProxy:RenderNoDataText:Edit' => 'No preview available for this third-party dashlet (class "%1$s").',
|
||||
'UI:DashletProxy:RenderNoDataText:Edit' => '第三方组件无法预览(class "%1$s").',
|
||||
'UI:DashletProxy:Prop-XMLConfiguration' => '配置 (显示为纯 XML)',
|
||||
|
||||
'UI:DashletPlainText:Label' => '文本',
|
||||
@@ -1243,12 +1243,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:DashletGroupByBars:Label' => '柱状图',
|
||||
'UI:DashletGroupByBars:Description' => '柱状图',
|
||||
'UI:DashletGroupByTable:Label' => '分组 (表)',
|
||||
'UI:DashletGroupByTable:Description' => 'List (Grouped by a field)',
|
||||
'UI:DashletGroupByTable:Description' => '列表 (Grouped by a field)',
|
||||
|
||||
// New in 2.5
|
||||
'UI:DashletGroupBy:Prop-Function' => 'Aggregation function',
|
||||
'UI:DashletGroupBy:Prop-FunctionAttribute' => 'Function attribute',
|
||||
'UI:DashletGroupBy:Prop-OrderDirection' => 'Direction',
|
||||
'UI:DashletGroupBy:Prop-Function' => '聚合函数',
|
||||
'UI:DashletGroupBy:Prop-FunctionAttribute' => '函数属性',
|
||||
'UI:DashletGroupBy:Prop-OrderDirection' => '方向',
|
||||
'UI:DashletGroupBy:Prop-OrderField' => '排序',
|
||||
'UI:DashletGroupBy:Prop-Limit' => 'Limit',
|
||||
|
||||
@@ -1256,7 +1256,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:DashletGroupBy:Order:desc' => '降序',
|
||||
|
||||
'UI:GroupBy:count' => '个数',
|
||||
'UI:GroupBy:count+' => 'Number of elements',
|
||||
'UI:GroupBy:count+' => '元件的个数',
|
||||
'UI:GroupBy:sum' => '总数',
|
||||
'UI:GroupBy:sum+' => 'Sum of %1$s',
|
||||
'UI:GroupBy:avg' => '平均',
|
||||
@@ -1268,7 +1268,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
// ---
|
||||
|
||||
'UI:DashletHeaderStatic:Label' => 'Header',
|
||||
'UI:DashletHeaderStatic:Description' => 'Displays an horizontal separator',
|
||||
'UI:DashletHeaderStatic:Description' => '显示水平分隔符',
|
||||
'UI:DashletHeaderStatic:Prop-Title' => '标题',
|
||||
'UI:DashletHeaderStatic:Prop-Title:Default' => '联系人',
|
||||
'UI:DashletHeaderStatic:Prop-Icon' => '图标',
|
||||
@@ -1278,7 +1278,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:DashletHeaderDynamic:Prop-Title' => '标题',
|
||||
'UI:DashletHeaderDynamic:Prop-Title:Default' => '联系人',
|
||||
'UI:DashletHeaderDynamic:Prop-Icon' => '图标',
|
||||
'UI:DashletHeaderDynamic:Prop-Subtitle' => 'Subtitle',
|
||||
'UI:DashletHeaderDynamic:Prop-Subtitle' => '副标题',
|
||||
'UI:DashletHeaderDynamic:Prop-Subtitle:Default' => '联系人',
|
||||
'UI:DashletHeaderDynamic:Prop-Query' => '查询',
|
||||
'UI:DashletHeaderDynamic:Prop-GroupBy' => 'Group by',
|
||||
@@ -1419,7 +1419,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:ConcurrentLockKilled' => '阻止并发修改当前对象的锁已被删除.',
|
||||
'UI:Menu:KillConcurrentLock' => '消除并发修改锁定!',
|
||||
|
||||
'UI:Menu:ExportPDF' => '导出 PDF...',
|
||||
'UI:Menu:ExportPDF' => '导出PDF...',
|
||||
'UI:Menu:PrintableVersion' => '打印',
|
||||
|
||||
'UI:BrowseInlineImages' => '浏览图片...',
|
||||
@@ -1440,7 +1440,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:Search:Criterion:MoreMenu:AddCriteria' => '添加条件',
|
||||
// - Add new criteria button
|
||||
'UI:Search:AddCriteria:List:RecentlyUsed:Title' => '最近使用',
|
||||
'UI:Search:AddCriteria:List:MostPopular:Title' => '最热门',
|
||||
'UI:Search:AddCriteria:List:MostPopular:Title' => '最常用',
|
||||
'UI:Search:AddCriteria:List:Others:Title' => '其它',
|
||||
'UI:Search:AddCriteria:List:RecentlyUsed:Placeholder' => '还没有.',
|
||||
|
||||
@@ -1477,20 +1477,20 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:Search:Criteria:Title:Enum:In:All' => '%1$s: 任何',
|
||||
// - TagSet widget
|
||||
'UI:Search:Criteria:Title:TagSet:Matches' => '%1$s: %2$s~~',
|
||||
// - External key widget
|
||||
'UI:Search:Criteria:Title:ExternalKey:Empty' => '%1$s 已定义',
|
||||
'UI:Search:Criteria:Title:ExternalKey:NotEmpty' => '%1$s 未被定义',
|
||||
'UI:Search:Criteria:Title:ExternalKey:Equals' => '%1$s %2$s',
|
||||
'UI:Search:Criteria:Title:ExternalKey:In' => '%1$s: %2$s',
|
||||
'UI:Search:Criteria:Title:ExternalKey:In:Many' => '%1$s: %2$s 和 %3$s others',
|
||||
'UI:Search:Criteria:Title:ExternalKey:In:All' => '%1$s: 任何',
|
||||
// - Hierarchical key widget
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:Empty' => '%1$s 已定义',
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:NotEmpty' => '%1$s 未被定义',
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:Equals' => '%1$s %2$s',
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:In' => '%1$s: %2$s',
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:In:Many' => '%1$s: %2$s 和 %3$s others',
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:In:All' => '%1$s: 任何',
|
||||
// - External key widget
|
||||
'UI:Search:Criteria:Title:ExternalKey:Empty' => '%1$s 已定义',
|
||||
'UI:Search:Criteria:Title:ExternalKey:NotEmpty' => '%1$s 未被定义',
|
||||
'UI:Search:Criteria:Title:ExternalKey:Equals' => '%1$s %2$s',
|
||||
'UI:Search:Criteria:Title:ExternalKey:In' => '%1$s: %2$s',
|
||||
'UI:Search:Criteria:Title:ExternalKey:In:Many' => '%1$s: %2$s 和 %3$s others',
|
||||
'UI:Search:Criteria:Title:ExternalKey:In:All' => '%1$s: 任何',
|
||||
// - Hierarchical key widget
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:Empty' => '%1$s 已定义',
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:NotEmpty' => '%1$s 未被定义',
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:Equals' => '%1$s %2$s',
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:In' => '%1$s: %2$s',
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:In:Many' => '%1$s: %2$s 和 %3$s others',
|
||||
'UI:Search:Criteria:Title:HierarchicalKey:In:All' => '%1$s: 任何',
|
||||
|
||||
// - Criteria operators
|
||||
// - Default widget
|
||||
@@ -1559,19 +1559,19 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Expression:Unit:Long:MINUTE' => '分钟',
|
||||
|
||||
'Expression:Verb:NOW' => '现在',
|
||||
'Expression:Verb:ISNULL' => ': undefined~~',
|
||||
'Expression:Verb:ISNULL' => ': 未定义',
|
||||
));
|
||||
|
||||
//
|
||||
// iTop Newsroom menu
|
||||
//
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'UI:Newsroom:NoNewMessage' => 'No new message~~',
|
||||
'UI:Newsroom:MarkAllAsRead' => 'Mark all messages as read~~',
|
||||
'UI:Newsroom:ViewAllMessages' => 'View all messages~~',
|
||||
'UI:Newsroom:Preferences' => 'Newsroom preferences~~',
|
||||
'UI:Newsroom:ConfigurationLink' => 'Configuration~~',
|
||||
'UI:Newsroom:ResetCache' => 'Reset cache~~',
|
||||
'UI:Newsroom:DisplayMessagesFor_Provider' => 'Display messages from %1$s~~',
|
||||
'UI:Newsroom:DisplayAtMost_X_Messages' => 'Display up to %1$s messages in the %2$s menu.~~',
|
||||
'UI:Newsroom:NoNewMessage' => '没有新消息',
|
||||
'UI:Newsroom:MarkAllAsRead' => '标记所有消息为已读',
|
||||
'UI:Newsroom:ViewAllMessages' => '查看全部消息',
|
||||
'UI:Newsroom:Preferences' => '消息选项',
|
||||
'UI:Newsroom:ConfigurationLink' => '配置',
|
||||
'UI:Newsroom:ResetCache' => '重置缓存',
|
||||
'UI:Newsroom:DisplayMessagesFor_Provider' => '显示来自 %1$s 的消息',
|
||||
'UI:Newsroom:DisplayAtMost_X_Messages' => '在 %2$s 菜单中最多显示 %1$s 条消息.',
|
||||
));
|
||||
|
||||
@@ -176,8 +176,9 @@ try
|
||||
$sConfigFile = utils::GetConfigFilePath();
|
||||
if (file_exists($sConfigFile) && !is_writable($sConfigFile) && $oStep->RequiresWritableConfig())
|
||||
{
|
||||
$oPage->error("<b>Error:</b> the configuration file '".$sConfigFile."' already exists and cannot be overwritten.");
|
||||
$oPage->p("The wizard cannot modify the configuration file for you. If you want to upgrade ".ITOP_APPLICATION.", make sure that the file '<b>".realpath($sConfigFile)."</b>' can be modified by the web server.");
|
||||
$sRelativePath = utils::GetConfigFilePathRelative();
|
||||
$oPage->error("<b>Error:</b> the configuration file '".$sRelativePath."' already exists and cannot be overwritten.");
|
||||
$oPage->p("The wizard cannot modify the configuration file for you. If you want to upgrade ".ITOP_APPLICATION.", make sure that the file '<b>".$sRelativePath."</b>' can be modified by the web server.");
|
||||
$oPage->output();
|
||||
}
|
||||
else
|
||||
|
||||
@@ -124,7 +124,7 @@ function CheckEmailSetting($oP)
|
||||
$oP->info("SMTP configuration (from config-itop.php): host: $sHost, port: $sPort, user: $sDisplayUserName, password: $sDisplayPassword, encryption: $sDisplayEncryption.");
|
||||
if (($sHost == 'localhost') && ($sPort == '25') && ($sUserName == '') && ($sPassword == '') )
|
||||
{
|
||||
$oP->warning("The default settings may not be suitable for your environment. You may want to ajust these values by editing iTop's configuration file (".APPROOT."conf/production/config-itop.php).");
|
||||
$oP->warning("The default settings may not be suitable for your environment. You may want to adjust these values by editing iTop's configuration file (".utils::GetConfigFilePathRelative().").");
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -134,7 +134,7 @@ function CheckEmailSetting($oP)
|
||||
break;
|
||||
|
||||
case 'LogFile':
|
||||
$oP->warning("iTop is configured to use the <b>LogFile</b> transport: emails will <em>not</em> be sent but logged to the file: '".APPROOT."/log/mail.log'.");
|
||||
$oP->warning("iTop is configured to use the <b>LogFile</b> transport: emails will <em>not</em> be sent but logged to the file: 'log/mail.log'.");
|
||||
$bRet = true;
|
||||
break;
|
||||
|
||||
|
||||
@@ -308,12 +308,12 @@ class iTopExtensionsMap
|
||||
$sModuleVersion = '0.0.1';
|
||||
}
|
||||
|
||||
if ($sParentExtensionId !== null)
|
||||
if (($sParentExtensionId !== null) && (array_key_exists($sParentExtensionId, $this->aExtensions)) && ($this->aExtensions[$sParentExtensionId] instanceof iTopExtension))
|
||||
{
|
||||
// Already inside an extension, let's add this module the list of modules belonging to this extension
|
||||
$this->aExtensions[$sParentExtensionId]->aModules[] = $sModuleName;
|
||||
$this->aExtensions[$sParentExtensionId]->aModuleVersion[$sModuleName] = $sModuleVersion;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Not already inside an folder containing an 'extension.xml' file
|
||||
|
||||
2
setup/phpcheck.php
Normal file
2
setup/phpcheck.php
Normal file
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
echo '<h1>PHP works!</h1>';
|
||||
@@ -1,3 +1,9 @@
|
||||
<?php
|
||||
require_once('../approot.inc.php');
|
||||
|
||||
require_once(APPROOT.'/application/startup.inc.php');
|
||||
|
||||
require_once(APPROOT.'/application/loginwebpage.class.inc.php');
|
||||
LoginWebPage::DoLogin(true); // Check user rights and prompt if needed
|
||||
phpinfo();
|
||||
?>
|
||||
|
||||
@@ -173,10 +173,11 @@ class WizardController
|
||||
// The configuration file already exists
|
||||
if (!is_writable($sConfigFile))
|
||||
{
|
||||
$sRelativePath = utils::GetConfigFilePathRelative();
|
||||
$oP = new SetupPage('Installation Cannot Continue');
|
||||
$oP->add("<h2>Fatal error</h2>\n");
|
||||
$oP->error("<b>Error:</b> the configuration file '".$sConfigFile."' already exists and cannot be overwritten.");
|
||||
$oP->p("The wizard cannot modify the configuration file for you. If you want to upgrade ".ITOP_APPLICATION.", make sure that the file '<b>".realpath($sConfigFile)."</b>' can be modified by the web server.");
|
||||
$oP->error("<b>Error:</b> the configuration file '".$sRelativePath."' already exists and cannot be overwritten.");
|
||||
$oP->p("The wizard cannot modify the configuration file for you. If you want to upgrade ".ITOP_APPLICATION.", make sure that the file '<b>".$sRelativePath."</b>' can be modified by the web server.");
|
||||
$oP->p('<button type="button" onclick="window.location.reload()">Reload</button>');
|
||||
$oP->output();
|
||||
return;
|
||||
|
||||
@@ -77,7 +77,7 @@ class WizStepWelcome extends WizardStep
|
||||
EOF
|
||||
);
|
||||
$oPage->add('<h1>'.ITOP_APPLICATION.' Installation Wizard</h1>');
|
||||
$aResults = SetupUtils::CheckPhpAndExtensions($oPage);
|
||||
$aResults = SetupUtils::CheckPhpAndExtensions();
|
||||
$this->bCanMoveForward = true;
|
||||
$aInfo = array();
|
||||
$aWarnings = array();
|
||||
|
||||
Reference in New Issue
Block a user