mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 23:44:11 +01:00
Compare commits
138 Commits
feature/70
...
support/3.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8141723869 | ||
|
|
8cb701bda3 | ||
|
|
1b29746806 | ||
|
|
fb9c317256 | ||
|
|
1aef576403 | ||
|
|
96e1388dde | ||
|
|
69c8791fc5 | ||
|
|
cddc452693 | ||
|
|
0904a21e3f | ||
|
|
1f1a2b660f | ||
|
|
33a906f11a | ||
|
|
82d11eeb47 | ||
|
|
2596a150bf | ||
|
|
142d6c8993 | ||
|
|
c4fc0ed982 | ||
|
|
320922a13d | ||
|
|
d3b9965283 | ||
|
|
f03d731b1d | ||
|
|
63cf78f64d | ||
|
|
8be7628668 | ||
|
|
f632cf3155 | ||
|
|
62caf16153 | ||
|
|
163a3afc0f | ||
|
|
d98e35d918 | ||
|
|
f8b54be896 | ||
|
|
c6f3e36451 | ||
|
|
53dc452d61 | ||
|
|
ccaf2dc5b7 | ||
|
|
46738d4ba4 | ||
|
|
5d5df5ad1a | ||
|
|
61469a28b9 | ||
|
|
dbcbb187b2 | ||
|
|
93bba66323 | ||
|
|
cab6394cba | ||
|
|
32140b360f | ||
|
|
e657052d17 | ||
|
|
d85767a838 | ||
|
|
e5a8bd61b0 | ||
|
|
eeec57536b | ||
|
|
514e0b80a5 | ||
|
|
35f4ab4941 | ||
|
|
16ff6341d0 | ||
|
|
ac826cb9f1 | ||
|
|
9dab8679d6 | ||
|
|
f737bcb9a0 | ||
|
|
4c78488644 | ||
|
|
77cc4672b0 | ||
|
|
b65e931c4c | ||
|
|
dfbfab7005 | ||
|
|
aa831b632c | ||
|
|
6cb3519308 | ||
|
|
cfb9fae648 | ||
|
|
f4e791734f | ||
|
|
6653ab0668 | ||
|
|
7ab258ba03 | ||
|
|
b5af30a93f | ||
|
|
ce5c05234d | ||
|
|
bbfa601ab1 | ||
|
|
83764deedb | ||
|
|
172b1cb1ff | ||
|
|
e1374a0e6b | ||
|
|
ca356859a3 | ||
|
|
5efe294895 | ||
|
|
18d0b88531 | ||
|
|
3139a0b610 | ||
|
|
e0170ccc7e | ||
|
|
367aac3e04 | ||
|
|
3b78885f38 | ||
|
|
f14b4c32be | ||
|
|
6a30d6caa9 | ||
|
|
a51242dc36 | ||
|
|
64ba706083 | ||
|
|
ed562c9f73 | ||
|
|
85c576a986 | ||
|
|
ff1305165e | ||
|
|
65c706fdfe | ||
|
|
5a34c76cc4 | ||
|
|
bdfd956825 | ||
|
|
da99a250bf | ||
|
|
f4b9a9a5fe | ||
|
|
5c46b4ef4a | ||
|
|
a97935ca01 | ||
|
|
efd7fb0f59 | ||
|
|
a4edf8cb21 | ||
|
|
dbd5ba0377 | ||
|
|
5d6f293956 | ||
|
|
65e6c84477 | ||
|
|
a337ef3d88 | ||
|
|
986c24d777 | ||
|
|
763112c179 | ||
|
|
a5efd981d8 | ||
|
|
289ca7b505 | ||
|
|
2922b22478 | ||
|
|
2af05a437e | ||
|
|
71d9536bc4 | ||
|
|
6377a738c5 | ||
|
|
a9f8dcc5e8 | ||
|
|
969a301cbb | ||
|
|
c325294e17 | ||
|
|
a29b0a8e33 | ||
|
|
f78b57521a | ||
|
|
da490739be | ||
|
|
48de13b5cf | ||
|
|
b867faa355 | ||
|
|
e878938e25 | ||
|
|
7453cc184f | ||
|
|
f3abe1ff13 | ||
|
|
473cf004b6 | ||
|
|
24f1cf8ca1 | ||
|
|
102a4a0c75 | ||
|
|
f6fec506b1 | ||
|
|
3b9f281afd | ||
|
|
ec465174f7 | ||
|
|
31bd763b90 | ||
|
|
5c12151c26 | ||
|
|
9777ac1a5c | ||
|
|
dd27a3ebb4 | ||
|
|
54439ad529 | ||
|
|
8f7bf00551 | ||
|
|
c020de59a7 | ||
|
|
aa53de467d | ||
|
|
bc6efc99ed | ||
|
|
bb3ab76205 | ||
|
|
0b1bdfff55 | ||
|
|
77c0cdf5aa | ||
|
|
af9fb74c54 | ||
|
|
5d6c4939f6 | ||
|
|
51d0d16a11 | ||
|
|
b0634c9fbc | ||
|
|
c951a33646 | ||
|
|
ed694b09b0 | ||
|
|
3868d57d28 | ||
|
|
1b3a2c8470 | ||
|
|
618d8e6468 | ||
|
|
f54d1273c9 | ||
|
|
01a955a16f | ||
|
|
a5aac0caad | ||
|
|
31e29506fa |
83
.github/pull_request_template.md
vendored
Normal file
83
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
<!--
|
||||
|
||||
IMPORTANT: Please follow the guidelines within this PR template before submitting it, it will greatly help us process your PR. 🙏
|
||||
|
||||
Any PRs not following the guidelines or with missing information will not be considered.
|
||||
|
||||
-->
|
||||
|
||||
## Base information
|
||||
| Question | Answer
|
||||
|---------------------------------------------------------------|--------
|
||||
| Related to a SourceForge thead / Another PR / Combodo ticket? | <!-- Put the URL -->
|
||||
| Type of change? | Bug fix / Enhancement / Translations
|
||||
|
||||
|
||||
## Symptom (bug) / Objective (enhancement)
|
||||
<!--
|
||||
If it's a bug
|
||||
- Explain the symptom in details
|
||||
- If possible put error messages, logs or screenshots (you can paste image directly in this editor).
|
||||
|
||||
If it's an enhancement
|
||||
- Describe what is blocking you, what is the objective with as much details as possible.
|
||||
- Add screenshots if it's related to UI.
|
||||
-->
|
||||
|
||||
|
||||
## Reproduction procedure (bug)
|
||||
<!--
|
||||
Remove this section only if it's NOT a bug.
|
||||
|
||||
Otherwise, explain step by step how to reproduce the issue on a standard iTop Community.
|
||||
|
||||
If it requires a custom datamodel, provide the minimal XML delta to reproduce it on a standard iTop Community.
|
||||
-->
|
||||
|
||||
1. On iTop x.y.z <!-- Put complete iTop version (eg. 3.1.0-2) -->
|
||||
2. With PHP x.y.z <!-- Put complete PHP version (eg. 8.1.24) -->
|
||||
2. First go there
|
||||
2. Then do that
|
||||
3. ...
|
||||
4. Finally, see that...
|
||||
|
||||
|
||||
## Cause (bug)
|
||||
<!--
|
||||
Remove this section only if it's NOT a bug.
|
||||
|
||||
Otherwise, explain what is the cause of the issue (where in the code and why)
|
||||
-->
|
||||
|
||||
|
||||
## Proposed solution (bug and enhancement)
|
||||
<!--
|
||||
Explain in details how you are proposing to solve this:
|
||||
- What did you do in the code and why
|
||||
- If you changed something in the UI, put before / after screenshots (you can paste image directly in this editor)
|
||||
-->
|
||||
|
||||
|
||||
## Checklist before requesting a review
|
||||
<!--
|
||||
Don't remove these lines, check them once done.
|
||||
-->
|
||||
- [ ] I have performed a self-review of my code
|
||||
- [ ] I have tested all changes I made on an iTop instance
|
||||
- [ ] I have added a unit test, otherwise I have explained why I couldn't
|
||||
- [ ] Is the PR clear and detailed enough so anyone can understand digging in the code?
|
||||
|
||||
## Checklist of things to do before PR is ready to merge
|
||||
<!--
|
||||
Things that needs to be done in the PR before it can be considered as ready to be merged
|
||||
|
||||
Examples:
|
||||
- Changes requested in the review
|
||||
- Unit test to add
|
||||
- Dictionary entries to translate
|
||||
- ...
|
||||
-->
|
||||
|
||||
- [ ] ...
|
||||
- [ ] ...
|
||||
- [ ] ...
|
||||
16
.github/workflows/action.yml
vendored
Normal file
16
.github/workflows/action.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
name: Add PRs to Combodo PRs Dashboard
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
|
||||
jobs:
|
||||
add-to-project:
|
||||
name: Add PR to Combodo Project
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/add-to-project@v1.0.2
|
||||
with:
|
||||
project-url: https://github.com/orgs/Combodo/projects/5
|
||||
github-token: ${{ secrets.PR_AUTOMATICALLY_ADD_TO_PROJECT }}
|
||||
@@ -27,7 +27,7 @@ $iTopFolder = __DIR__."/../../../";
|
||||
require_once("$iTopFolder/approot.inc.php");
|
||||
require_once(APPROOT."/application/utils.inc.php");
|
||||
|
||||
if (php_sapi_name() !== 'cli')
|
||||
if (PHP_SAPI !== 'cli')
|
||||
{
|
||||
throw new \Exception('This script can only run from CLI');
|
||||
}
|
||||
@@ -48,4 +48,4 @@ if (!file_exists($sCssFile))
|
||||
{
|
||||
fwrite(STDERR, "Failed to compile $sCssFile, exiting.");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ $iTopFolder = __DIR__ . "/../../" ;
|
||||
require_once ("$iTopFolder/approot.inc.php");
|
||||
require_once (APPROOT."/setup/setuputils.class.inc.php");
|
||||
|
||||
if (php_sapi_name() !== 'cli')
|
||||
if (PHP_SAPI !== 'cli')
|
||||
{
|
||||
throw new \Exception('This script can only run from CLI');
|
||||
}
|
||||
@@ -70,4 +70,4 @@ if (false === empty($aMissing)) {
|
||||
echo "Some new tests dirs exists !\n"
|
||||
.' They must be declared either in the allowed or denied list in '.iTopComposer::class." (see N°2651).\n"
|
||||
.' List of dirs:'."\n".var_export($aMissing, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2037,8 +2037,16 @@ class RestUtils
|
||||
elseif (is_string($key))
|
||||
{
|
||||
// OQL
|
||||
$oSearch = DBObjectSearch::FromOQL($key);
|
||||
}
|
||||
try {
|
||||
$oSearch = DBObjectSearch::FromOQL($key);
|
||||
} catch (Exception $e) {
|
||||
throw new CoreOqlException('Query failed to execute', [
|
||||
'query' => $key,
|
||||
'exception_class' => get_class($e),
|
||||
'exception_message' => $e->getMessage(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Wrong format for key");
|
||||
|
||||
@@ -60,6 +60,24 @@ class CoreCannotSaveObjectException extends CoreException
|
||||
return $sContent;
|
||||
}
|
||||
|
||||
public function getTextMessage()
|
||||
{
|
||||
$sTitle = Dict::S('UI:Error:SaveFailed');
|
||||
$sContent = utils::HtmlEntities($sTitle);
|
||||
|
||||
if (count($this->aIssues) == 1) {
|
||||
$sIssue = reset($this->aIssues);
|
||||
$sContent .= utils::HtmlEntities($sIssue);
|
||||
} else {
|
||||
foreach ($this->aIssues as $sError) {
|
||||
$sContent .= " ".utils::HtmlEntities($sError).", ";
|
||||
}
|
||||
}
|
||||
|
||||
return $sContent;
|
||||
}
|
||||
|
||||
|
||||
public function getIssues()
|
||||
{
|
||||
return $this->aIssues;
|
||||
|
||||
@@ -228,13 +228,8 @@ class utils
|
||||
|
||||
public static function IsModeCLI()
|
||||
{
|
||||
$sSAPIName = php_sapi_name();
|
||||
$sCleanName = strtolower(trim($sSAPIName));
|
||||
if ($sCleanName == 'cli') {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
$sCleanName = strtolower(trim(PHP_SAPI));
|
||||
return ($sCleanName === 'cli');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -357,13 +352,13 @@ class utils
|
||||
}
|
||||
return self::Sanitize($retValue, $defaultValue, $sSanitizationFilter);
|
||||
}
|
||||
|
||||
|
||||
public static function ReadPostedParam($sName, $defaultValue = '', $sSanitizationFilter = 'parameter')
|
||||
{
|
||||
$retValue = isset($_POST[$sName]) ? $_POST[$sName] : $defaultValue;
|
||||
return self::Sanitize($retValue, $defaultValue, $sSanitizationFilter);
|
||||
}
|
||||
|
||||
|
||||
public static function Sanitize($value, $defaultValue, $sSanitizationFilter)
|
||||
{
|
||||
if ($value === $defaultValue)
|
||||
@@ -379,7 +374,7 @@ class utils
|
||||
$retValue = $defaultValue;
|
||||
}
|
||||
}
|
||||
return $retValue;
|
||||
return $retValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -529,11 +524,11 @@ class utils
|
||||
$sMimeType = self::GetFileMimeType($sTmpName);
|
||||
$oDocument = new ormDocument($doc_content, $sMimeType, $sName);
|
||||
break;
|
||||
|
||||
|
||||
case UPLOAD_ERR_NO_FILE:
|
||||
// no file to load, it's a normal case, just return an empty document
|
||||
break;
|
||||
|
||||
|
||||
case UPLOAD_ERR_FORM_SIZE:
|
||||
case UPLOAD_ERR_INI_SIZE:
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadedFileTooBig', ini_get('upload_max_filesize')));
|
||||
@@ -542,7 +537,7 @@ class utils
|
||||
case UPLOAD_ERR_PARTIAL:
|
||||
throw new FileUploadException(Dict::S('UI:Error:UploadedFileTruncated.'));
|
||||
break;
|
||||
|
||||
|
||||
case UPLOAD_ERR_NO_TMP_DIR:
|
||||
throw new FileUploadException(Dict::S('UI:Error:NoTmpDir'));
|
||||
break;
|
||||
@@ -555,7 +550,7 @@ class utils
|
||||
$sName = is_null($sIndex) ? $aFileInfo['name'] : $aFileInfo['name'][$sIndex];
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadStoppedByExtension_FileName', $sName));
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadFailedUnknownCause_Code', $sError));
|
||||
break;
|
||||
@@ -661,17 +656,17 @@ class utils
|
||||
|
||||
return $aSelectedObj;
|
||||
}
|
||||
|
||||
|
||||
public static function GetNewTransactionId()
|
||||
{
|
||||
return privUITransaction::GetNewTransactionId();
|
||||
}
|
||||
|
||||
|
||||
public static function IsTransactionValid($sId, $bRemoveTransaction = true)
|
||||
{
|
||||
return privUITransaction::IsTransactionValid($sId, $bRemoveTransaction);
|
||||
}
|
||||
|
||||
|
||||
public static function RemoveTransaction($sId)
|
||||
{
|
||||
return privUITransaction::RemoveTransaction($sId);
|
||||
@@ -856,9 +851,9 @@ class utils
|
||||
$aDateTokens = array_keys($aSpec);
|
||||
$aDateRegexps = array_values($aSpec);
|
||||
}
|
||||
|
||||
|
||||
$sDateRegexp = str_replace($aDateTokens, $aDateRegexps, $sFormat);
|
||||
|
||||
|
||||
if (preg_match('!^(?<head>)'.$sDateRegexp.'(?<tail>)$!', $sDate, $aMatches))
|
||||
{
|
||||
$sYear = isset($aMatches['year']) ? $aMatches['year'] : 0;
|
||||
@@ -875,7 +870,7 @@ class utils
|
||||
}
|
||||
// http://www.spaweditor.com/scripts/regex/index.php
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Convert an old date/time format specification (using % placeholders)
|
||||
* to a format compatible with DateTime::createFromFormat
|
||||
@@ -1432,7 +1427,7 @@ class utils
|
||||
public static function GetPopupMenuItemsBlock(iUIBlock &$oContainerBlock, $iMenuId, $param, &$aActions, $sDataTableId = null)
|
||||
{
|
||||
// 1st - add standard built-in menu items
|
||||
//
|
||||
//
|
||||
switch($iMenuId)
|
||||
{
|
||||
case iPopupMenuExtension::MENU_OBJLIST_TOOLKIT:
|
||||
@@ -1457,7 +1452,7 @@ class utils
|
||||
"mailto:?body=".urlencode($sUrl).' ' // Add an extra space to make it work in Outlook
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
if (UserRights::IsActionAllowed($param->GetFilter()->GetClass(), UR_ACTION_BULK_READ, $param) != UR_ALLOWED_NO)
|
||||
{
|
||||
// Bulk export actions
|
||||
@@ -1471,7 +1466,7 @@ class utils
|
||||
}
|
||||
$aResult[] = new JSPopupMenuItem('UI:Menu:AddToDashboard', Dict::S('UI:Menu:AddToDashboard'), "DashletCreationDlg('$sOQL', '$sContext')");
|
||||
$aResult[] = new JSPopupMenuItem('UI:Menu:ShortcutList', Dict::S('UI:Menu:ShortcutList'), "ShortcutListDlg('$sOQL', '$sDataTableId', '$sContext')");
|
||||
|
||||
|
||||
break;
|
||||
|
||||
case iPopupMenuExtension::MENU_OBJDETAILS_ACTIONS:
|
||||
@@ -1485,7 +1480,7 @@ class utils
|
||||
$oContainerBlock->AddJsFileRelPath('js/tabularfieldsselector.js');
|
||||
$oContainerBlock->AddJsFileRelPath('js/jquery.dragtable.js');
|
||||
$oContainerBlock->AddCssFileRelPath('css/dragtable.css');
|
||||
|
||||
|
||||
$aResult = array(
|
||||
new SeparatorPopupMenuItem(),
|
||||
// Static menus: Email this page & CSV Export
|
||||
@@ -1549,7 +1544,7 @@ class utils
|
||||
if (is_object($oMenuItem))
|
||||
{
|
||||
$aActions[$oMenuItem->GetUID()] = $oMenuItem->GetMenuItem();
|
||||
|
||||
|
||||
foreach($oMenuItem->GetLinkedScripts() as $sLinkedScript)
|
||||
{
|
||||
$oContainerBlock->AddJsFileRelPath($sLinkedScript);
|
||||
@@ -1686,7 +1681,7 @@ class utils
|
||||
return $sProposed;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Some characters cause troubles with jQuery when used inside DOM IDs, so let's replace them by the safe _ (underscore)
|
||||
* @param string $sId The ID to sanitize
|
||||
@@ -1696,13 +1691,13 @@ class utils
|
||||
{
|
||||
return str_replace(array(':', '[', ']', '+', '-', ' '), '_', $sId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper to execute an HTTP POST request
|
||||
* Source: http://netevil.org/blog/2006/nov/http-post-from-php-without-curl
|
||||
* originaly named after do_post_request
|
||||
* Does not require cUrl but requires openssl for performing https POSTs.
|
||||
*
|
||||
*
|
||||
* @param string $sUrl The URL to POST the data to
|
||||
* @param array $aData The data to POST as an array('param_name' => value)
|
||||
* @param string $sOptionnalHeaders Additional HTTP headers as a string with newlines between headers
|
||||
@@ -1713,11 +1708,11 @@ class utils
|
||||
*
|
||||
* @return string The result of the POST request
|
||||
* @throws Exception with a specific error message depending on the cause
|
||||
*/
|
||||
*/
|
||||
public static function DoPostRequest($sUrl, $aData, $sOptionnalHeaders = null, &$aResponseHeaders = null, $aCurlOptions = array())
|
||||
{
|
||||
// $sOptionnalHeaders is a string containing additional HTTP headers that you would like to send in your request.
|
||||
|
||||
|
||||
if (function_exists('curl_init'))
|
||||
{
|
||||
// If cURL is available, let's use it, since it provides a greater control over the various HTTP/SSL options
|
||||
@@ -1750,7 +1745,7 @@ class utils
|
||||
CURLOPT_POSTFIELDS => http_build_query($aData),
|
||||
CURLOPT_HTTPHEADER => $aHTTPHeaders,
|
||||
);
|
||||
|
||||
|
||||
$aAllOptions = $aCurlOptions + $aOptions;
|
||||
$ch = curl_init($sUrl);
|
||||
curl_setopt_array($ch, $aAllOptions);
|
||||
@@ -1776,7 +1771,7 @@ class utils
|
||||
else
|
||||
{
|
||||
// cURL is not available let's try with streams and fopen...
|
||||
|
||||
|
||||
$sData = http_build_query($aData);
|
||||
$aParams = array('http' => array(
|
||||
'method' => 'POST',
|
||||
@@ -1788,7 +1783,7 @@ class utils
|
||||
$aParams['http']['header'] .= $sOptionnalHeaders;
|
||||
}
|
||||
$ctx = stream_context_create($aParams);
|
||||
|
||||
|
||||
$fp = @fopen($sUrl, 'rb', false, $ctx);
|
||||
if (!$fp)
|
||||
{
|
||||
@@ -1829,7 +1824,7 @@ class utils
|
||||
|
||||
/**
|
||||
* Get a standard list of character sets
|
||||
*
|
||||
*
|
||||
* @param array $aAdditionalEncodings Additional values
|
||||
* @return array of iconv code => english label, sorted by label
|
||||
*/
|
||||
@@ -1934,7 +1929,7 @@ class utils
|
||||
return $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Convert (?) plain text to some HTML markup by replacing newlines by <br/> tags
|
||||
* and escaping HTML entities
|
||||
@@ -1947,7 +1942,7 @@ class utils
|
||||
$sText = str_replace("\r", "\n", $sText);
|
||||
return str_replace("\n", '<br/>', htmlentities($sText, ENT_QUOTES, 'UTF-8'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Eventually compiles the SASS (.scss) file into the CSS (.css) file
|
||||
*
|
||||
@@ -2014,7 +2009,7 @@ class utils
|
||||
|
||||
return $sCss->getCss();
|
||||
}
|
||||
|
||||
|
||||
public static function GetImageSize($sImageData)
|
||||
{
|
||||
if (function_exists('getimagesizefromstring')) // PHP 5.4.0 or higher
|
||||
@@ -2071,7 +2066,7 @@ class utils
|
||||
case 'image/png':
|
||||
$img = @imagecreatefromstring($oImage->GetData());
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
// Unsupported image type, return the image as-is
|
||||
//throw new Exception("Unsupported image type: '".$oImage->GetMimeType()."'. Cannot resize the image, original image will be used.");
|
||||
@@ -2085,14 +2080,14 @@ class utils
|
||||
else
|
||||
{
|
||||
// Let's scale the image, preserving the transparency for GIFs and PNGs
|
||||
|
||||
|
||||
$fScale = min($iMaxImageWidth / $iWidth, $iMaxImageHeight / $iHeight);
|
||||
|
||||
$iNewWidth = $iWidth * $fScale;
|
||||
$iNewHeight = $iHeight * $fScale;
|
||||
|
||||
|
||||
$new = imagecreatetruecolor($iNewWidth, $iNewHeight);
|
||||
|
||||
|
||||
// Preserve transparency
|
||||
if(($oImage->GetMimeType() == "image/gif") || ($oImage->GetMimeType() == "image/png"))
|
||||
{
|
||||
@@ -2100,38 +2095,38 @@ class utils
|
||||
imagealphablending($new, false);
|
||||
imagesavealpha($new, true);
|
||||
}
|
||||
|
||||
|
||||
imagecopyresampled($new, $img, 0, 0, 0, 0, $iNewWidth, $iNewHeight, $iWidth, $iHeight);
|
||||
|
||||
|
||||
ob_start();
|
||||
switch ($oImage->GetMimeType())
|
||||
{
|
||||
case 'image/gif':
|
||||
imagegif($new); // send image to output buffer
|
||||
break;
|
||||
|
||||
|
||||
case 'image/jpeg':
|
||||
imagejpeg($new, null, 80); // null = send image to output buffer, 80 = good quality
|
||||
break;
|
||||
|
||||
|
||||
case 'image/png':
|
||||
imagepng($new, null, 5); // null = send image to output buffer, 5 = medium compression
|
||||
break;
|
||||
}
|
||||
$oResampledImage = new ormDocument(ob_get_contents(), $oImage->GetMimeType(), $oImage->GetFileName());
|
||||
@ob_end_clean();
|
||||
|
||||
|
||||
imagedestroy($img);
|
||||
imagedestroy($new);
|
||||
|
||||
|
||||
return $oResampledImage;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a 128 bit UUID in the format: {########-####-####-####-############}
|
||||
*
|
||||
*
|
||||
* Note: this method can be run from the command line as well as from the web server.
|
||||
* Note2: this method is not cryptographically secure! If you need a cryptographically secure value
|
||||
* consider using open_ssl or PHP 7 methods.
|
||||
@@ -2169,7 +2164,7 @@ class utils
|
||||
{
|
||||
return ModuleService::GetInstance()->GetCurrentModuleName($iCallDepth + 1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* **Warning** : returned result can be invalid as we're using backtrace to find the module dir name
|
||||
*
|
||||
@@ -2206,7 +2201,7 @@ class utils
|
||||
{
|
||||
return ModuleService::GetInstance()->GetCurrentModuleUrl(1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $sProperty The name of the property to retrieve
|
||||
* @param mixed $defaultvalue
|
||||
@@ -2216,7 +2211,7 @@ class utils
|
||||
{
|
||||
return ModuleService::GetInstance()->GetCurrentModuleSetting($sProperty, $defaultvalue);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $sModuleName
|
||||
* @return string|NULL compiled version of a given module, as it was seen by the compiler
|
||||
@@ -2225,7 +2220,7 @@ class utils
|
||||
{
|
||||
return ModuleService::GetInstance()->GetCompiledModuleVersion($sModuleName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if the given path/url is an http(s) URL
|
||||
* @param string $sPath
|
||||
@@ -2240,7 +2235,7 @@ class utils
|
||||
}
|
||||
return $bRet;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if the given URL is a link to download a document/image on the CURRENT iTop
|
||||
* In such a case we can read the content of the file directly in the database (if the users rights allow) and return the ormDocument
|
||||
@@ -2289,7 +2284,7 @@ class utils
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Read the content of a file (and retrieve its MIME type) from either:
|
||||
* - an URL pointing to a blob (image/document) on the current iTop server
|
||||
@@ -2333,7 +2328,7 @@ class utils
|
||||
'html' => 'text/html',
|
||||
'exe' => 'application/octet-stream',
|
||||
);
|
||||
|
||||
|
||||
$sData = null;
|
||||
$sMimeType = 'text/plain'; // Default MIME Type: treat the file as a bunch a characters...
|
||||
$sFileName = 'uploaded-file'; // Default name for downloaded-files
|
||||
@@ -2389,7 +2384,7 @@ class utils
|
||||
}
|
||||
$sExtension = strtolower(pathinfo($sPath, PATHINFO_EXTENSION));
|
||||
$sFileName = basename($sPath);
|
||||
|
||||
|
||||
if (array_key_exists($sExtension, $aKnownExtensions))
|
||||
{
|
||||
$sMimeType = $aKnownExtensions[$sExtension];
|
||||
@@ -2403,7 +2398,7 @@ class utils
|
||||
}
|
||||
return $oUploadedDoc;
|
||||
}
|
||||
|
||||
|
||||
protected static function ParseHeaders($aHeaders)
|
||||
{
|
||||
$aCleanHeaders = array();
|
||||
@@ -2428,7 +2423,7 @@ class utils
|
||||
}
|
||||
return $aCleanHeaders;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string a string based on compilation time or (if not available because the datamodel has not been loaded)
|
||||
* the version of iTop. This string is useful to prevent browser side caching of content that may vary at each
|
||||
|
||||
@@ -68,7 +68,7 @@ if (file_exists(MAINTENANCE_MODE_FILE) && !$bBypassMaintenance)
|
||||
http_response_code(503);
|
||||
// Display message depending on the request
|
||||
include(APPROOT.'application/maintenancemsg.php');
|
||||
$sSAPIName = strtoupper(trim(php_sapi_name()));
|
||||
$sSAPIName = strtoupper(trim(PHP_SAPI));
|
||||
|
||||
switch (true)
|
||||
{
|
||||
|
||||
@@ -2766,6 +2766,11 @@ class AttributeObjectKey extends AttributeDBFieldVoid
|
||||
return ((int) $proposedValue) !== 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*
|
||||
* @param int|DBObject $proposedValue Object key or valid ({@see MetaModel::IsValidObject()}) datamodel object
|
||||
*/
|
||||
public function MakeRealValue($proposedValue, $oHostObj)
|
||||
{
|
||||
if (is_null($proposedValue))
|
||||
@@ -2778,7 +2783,6 @@ class AttributeObjectKey extends AttributeDBFieldVoid
|
||||
}
|
||||
if (MetaModel::IsValidObject($proposedValue))
|
||||
{
|
||||
/** @var \DBObject $proposedValue */
|
||||
return $proposedValue->GetKey();
|
||||
}
|
||||
|
||||
@@ -6167,6 +6171,11 @@ class AttributeDateTime extends AttributeDBField
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*
|
||||
* @param int|string $proposedValue timestamp ({@see DateTime::getTimestamp()) or date as string, following the {@see GetInternalFormat} format.
|
||||
*/
|
||||
public function MakeRealValue($proposedValue, $oHostObj)
|
||||
{
|
||||
if (is_null($proposedValue))
|
||||
@@ -7934,9 +7943,9 @@ class AttributeBlob extends AttributeDefinition
|
||||
}
|
||||
|
||||
/**
|
||||
* Users can provide the document from an URL (including an URL on iTop itself)
|
||||
* for CSV import. Administrators can even provide the path to a local file
|
||||
* {@inheritDoc}
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @param string $proposedValue Can be an URL (including an URL to iTop itself), or a local path (CSV import)
|
||||
*
|
||||
* @see AttributeDefinition::MakeRealValue()
|
||||
*/
|
||||
|
||||
@@ -548,10 +548,9 @@ class CMDBSource
|
||||
/**
|
||||
* @param string $sSQLQuery
|
||||
*
|
||||
* @return \mysqli_result|null
|
||||
* @throws \MySQLException
|
||||
* @throws \MySQLHasGoneAwayException
|
||||
* @throws \CoreException
|
||||
* @return mysqli_result|null
|
||||
* @throws MySQLException
|
||||
* @throws MySQLHasGoneAwayException
|
||||
*
|
||||
* @since 2.7.0 N°679 handles nested transactions
|
||||
*/
|
||||
@@ -1169,8 +1168,8 @@ class CMDBSource
|
||||
*/
|
||||
public static function IsSameFieldTypes($sItopGeneratedFieldType, $sDbFieldType)
|
||||
{
|
||||
list($sItopFieldDataType, $sItopFieldTypeOptions, $sItopFieldOtherOptions) = static::GetFieldDataTypeAndOptions($sItopGeneratedFieldType);
|
||||
list($sDbFieldDataType, $sDbFieldTypeOptions, $sDbFieldOtherOptions) = static::GetFieldDataTypeAndOptions($sDbFieldType);
|
||||
[$sItopFieldDataType, $sItopFieldTypeOptions, $sItopFieldOtherOptions] = static::GetFieldDataTypeAndOptions($sItopGeneratedFieldType);
|
||||
[$sDbFieldDataType, $sDbFieldTypeOptions, $sDbFieldOtherOptions] = static::GetFieldDataTypeAndOptions($sDbFieldType);
|
||||
|
||||
if (strcasecmp($sItopFieldDataType, $sDbFieldDataType) !== 0)
|
||||
{
|
||||
@@ -1609,7 +1608,19 @@ class CMDBSource
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
public static function GetClusterNb()
|
||||
{
|
||||
$result = 0;
|
||||
$sSql = "SHOW STATUS LIKE 'wsrep_cluster_size';";
|
||||
$aRows = self::QueryToArray($sSql);
|
||||
if (count($aRows) > 0)
|
||||
{
|
||||
$result = $aRows[0]['Value'];
|
||||
}
|
||||
return intval($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see https://dev.mysql.com/doc/refman/5.7/en/charset-database.html
|
||||
* @return string query to upgrade database charset and collation if needed, null if not
|
||||
* @throws \MySQLException
|
||||
|
||||
@@ -524,11 +524,10 @@ abstract class DBObject implements iDisplay
|
||||
* Attributes setter
|
||||
*
|
||||
* Set $sAttCode to $value.
|
||||
* The value must be valid according to the type of attribute.
|
||||
* The value must be valid according to the type of attribute : see the different {@see AttributeDefinition::MakeRealValue()} implementations
|
||||
* The value will not be recorded into the DB until DBObject::DBWrite() is called.
|
||||
*
|
||||
* @api
|
||||
* @see DBWrite()
|
||||
*
|
||||
* @param string $sAttCode
|
||||
* @param mixed $value
|
||||
@@ -536,6 +535,8 @@ abstract class DBObject implements iDisplay
|
||||
* @return bool
|
||||
* @throws CoreException
|
||||
* @throws CoreUnexpectedValue
|
||||
*
|
||||
* @see DBWrite()
|
||||
*/
|
||||
public function Set($sAttCode, $value)
|
||||
{
|
||||
@@ -2134,16 +2135,17 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $aUniquenessRuleProperties uniqueness rule properties
|
||||
*
|
||||
* @param string $sUniquenessRuleId uniqueness rule ID
|
||||
* @return \DBSearch
|
||||
* @throws \OQLException
|
||||
* @throws \CoreException
|
||||
*
|
||||
* @internal
|
||||
*
|
||||
* @param string $sUniquenessRuleId uniqueness rule ID
|
||||
* @param array $aUniquenessRuleProperties uniqueness rule properties
|
||||
*
|
||||
* @return \DBSearch
|
||||
* @throws \CoreException
|
||||
* @throws \OQLException
|
||||
* @since 2.6.0 N°659 uniqueness constraint
|
||||
* @api
|
||||
* @since 2.6.0 N°659 uniqueness constraint
|
||||
* @since 2.7.11 3.1.2 3.2.0 N°4314 Fix Uniqueness rules not working with Silo
|
||||
*/
|
||||
protected function GetSearchForUniquenessRule($sUniquenessRuleId, $aUniquenessRuleProperties)
|
||||
{
|
||||
@@ -2172,8 +2174,10 @@ abstract class DBObject implements iDisplay
|
||||
$oUniquenessQuery->AddConditionForInOperatorUsingParam('finalclass', $aChildClassesWithRuleDisabled, false);
|
||||
}
|
||||
|
||||
return $oUniquenessQuery;
|
||||
}
|
||||
$oUniquenessQuery->AllowAllData();
|
||||
|
||||
return $oUniquenessQuery;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sAttCode
|
||||
@@ -4228,7 +4232,7 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
}
|
||||
$oDate->modify($sModifier);
|
||||
$this->Set($sAttCode, $oDate->format('Y-m-d H:i:s'));
|
||||
$this->Set($sAttCode, $oDate->getTimestamp());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -885,11 +885,11 @@ abstract class DBSearch
|
||||
return;
|
||||
}
|
||||
|
||||
if (count($aColumns) == 0)
|
||||
{
|
||||
$aColumns = array_keys(MetaModel::ListAttributeDefs($this->GetClass()));
|
||||
// Add the standard id (as first column)
|
||||
array_unshift($aColumns, 'id');
|
||||
if (count($aColumns) == 0)
|
||||
{
|
||||
$aColumns = array_keys(MetaModel::ListAttributeDefs($this->GetClass()));
|
||||
// Add the standard id (as first column)
|
||||
array_unshift($aColumns, 'id');
|
||||
}
|
||||
|
||||
$aQueryCols = CMDBSource::GetColumns($resQuery, $sSQL);
|
||||
@@ -919,6 +919,55 @@ abstract class DBSearch
|
||||
return $aRes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Selects a column ($sAttCode) from the specified class ($sClassAlias - default main class) of the DBsearch object and gives the result as an array
|
||||
* @param string $sAttCode
|
||||
* @param string|null $sClassAlias
|
||||
*
|
||||
* @return array
|
||||
* @throws ConfigException
|
||||
* @throws CoreException
|
||||
* @throws MissingQueryArgument
|
||||
* @throws MySQLException
|
||||
* @throws MySQLHasGoneAwayException
|
||||
*/
|
||||
public function SelectAttributeToArray(string $sAttCode, ?string $sClassAlias = null):array
|
||||
{
|
||||
if(is_null($sClassAlias)) {
|
||||
$sClassAlias = $this->GetClassAlias();
|
||||
}
|
||||
|
||||
$sClass = $this->GetClass();
|
||||
if($sAttCode === 'id'){
|
||||
$aAttToLoad[$sClassAlias]=[];
|
||||
} else {
|
||||
$aAttToLoad[$sClassAlias][$sAttCode] = MetaModel::GetAttributeDef($sClass, $sAttCode);
|
||||
}
|
||||
|
||||
$sSQL = $this->MakeSelectQuery([], [], $aAttToLoad);
|
||||
$resQuery = CMDBSource::Query($sSQL);
|
||||
if (!$resQuery)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
$sColName = $sClassAlias.$sAttCode;
|
||||
|
||||
$aRes = [];
|
||||
while ($aRow = CMDBSource::FetchArray($resQuery))
|
||||
{
|
||||
$aMappedRow = array();
|
||||
if($sAttCode === 'id') {
|
||||
$aMappedRow[$sAttCode] = $aRow[$sColName];
|
||||
} else {
|
||||
$aMappedRow[$sAttCode] = $aAttToLoad[$sClassAlias][$sAttCode]->FromSQLToValue($aRow, $sColName);
|
||||
}
|
||||
$aRes[] = $aMappedRow;
|
||||
}
|
||||
CMDBSource::FreeResult($resQuery);
|
||||
return $aRes;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Construction of the SQL queries
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
//
|
||||
// This file is part of iTop.
|
||||
//
|
||||
// iTop is free software; you can redistribute it and/or modify
|
||||
// iTop is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
@@ -1238,19 +1238,7 @@ class DeprecatedCallsLog extends LogAPI
|
||||
}
|
||||
|
||||
$aStack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3);
|
||||
$iStackDeprecatedMethodLevel = 1; // level 0 = current method, level 1 = method containing the `NotifyDeprecatedPhpMethod` call
|
||||
$sDeprecatedObject = $aStack[$iStackDeprecatedMethodLevel]['class'];
|
||||
$sDeprecatedMethod = $aStack[$iStackDeprecatedMethodLevel]['function'];
|
||||
$sCallerFile = $aStack[$iStackDeprecatedMethodLevel]['file'];
|
||||
$sCallerLine = $aStack[$iStackDeprecatedMethodLevel]['line'];
|
||||
$sMessage = "Call to {$sDeprecatedObject}::{$sDeprecatedMethod} in {$sCallerFile}#L{$sCallerLine}";
|
||||
|
||||
$iStackCallerMethodLevel = $iStackDeprecatedMethodLevel + 1; // level 2 = caller of the deprecated method
|
||||
if (array_key_exists($iStackCallerMethodLevel, $aStack)) {
|
||||
$sCallerObject = $aStack[$iStackCallerMethodLevel]['class'];
|
||||
$sCallerMethod = $aStack[$iStackCallerMethodLevel]['function'];
|
||||
$sMessage .= " ({$sCallerObject}::{$sCallerMethod})";
|
||||
}
|
||||
$sMessage = self::GetMessageFromStack($aStack);
|
||||
|
||||
if (!is_null($sAdditionalMessage)) {
|
||||
$sMessage .= ' : '.$sAdditionalMessage;
|
||||
@@ -1259,6 +1247,44 @@ class DeprecatedCallsLog extends LogAPI
|
||||
static::Warning($sMessage, self::ENUM_CHANNEL_PHP_METHOD);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $aDebugBacktrace data from {@see debug_backtrace()}
|
||||
* @return string message to print to the log
|
||||
*/
|
||||
private static function GetMessageFromStack(array $aDebugBacktrace): string
|
||||
{
|
||||
// level 0 = current method
|
||||
// level 1 = deprecated method, containing the `NotifyDeprecatedPhpMethod` call
|
||||
$sMessage = 'Call' . self::GetMessageForCurrentStackLevel($aDebugBacktrace[1], " to ");
|
||||
|
||||
// level 2 = caller of the deprecated method
|
||||
if (array_key_exists(2, $aDebugBacktrace)) {
|
||||
$sMessage .= ' (from ';
|
||||
$sMessage .= self::GetMessageForCurrentStackLevel($aDebugBacktrace[2]);
|
||||
$sMessage .= ')';
|
||||
}
|
||||
|
||||
return $sMessage;
|
||||
}
|
||||
|
||||
private static function GetMessageForCurrentStackLevel(array $aCurrentLevelDebugTrace, ?string $sPrefix=""): string
|
||||
{
|
||||
$sMessage = "";
|
||||
if (array_key_exists('class', $aCurrentLevelDebugTrace)) {
|
||||
$sDeprecatedObject = $aCurrentLevelDebugTrace['class'];
|
||||
$sDeprecatedMethod = $aCurrentLevelDebugTrace['function'] ?? "";
|
||||
$sMessage = "{$sPrefix}{$sDeprecatedObject}::{$sDeprecatedMethod} in ";
|
||||
}
|
||||
|
||||
if (array_key_exists('file', $aCurrentLevelDebugTrace)) {
|
||||
$sCallerFile = $aCurrentLevelDebugTrace['file'];
|
||||
$sCallerLine = $aCurrentLevelDebugTrace['line'] ?? "";
|
||||
$sMessage .= "{$sCallerFile}#L{$sCallerLine}";
|
||||
}
|
||||
|
||||
return $sMessage;
|
||||
}
|
||||
|
||||
public static function Log($sLevel, $sMessage, $sChannel = null, $aContext = array()): void
|
||||
{
|
||||
if (true === utils::IsDevelopmentEnvironment()) {
|
||||
|
||||
@@ -537,7 +537,7 @@ EOF
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception('graphviz not found (executable path: '.$sDotExecutable.')');
|
||||
throw new Exception('graphviz not found');
|
||||
}
|
||||
return $sHtml;
|
||||
}
|
||||
@@ -592,7 +592,7 @@ EOF
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception('graphviz not found (executable path: '.$sDotExecutable.')');
|
||||
throw new Exception('graphviz not found');
|
||||
}
|
||||
return $sHtml;
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ abstract class UserRightsAddOnAPI
|
||||
$oSearchSharers->AllowAllData();
|
||||
$oSearchSharers->AddCondition_ReferencedBy($oShareSearch, 'sharing_org_id');
|
||||
$aSharers = array();
|
||||
foreach($oSearchSharers->ToDataArray(array('id')) as $aRow)
|
||||
foreach($oSearchSharers->SelectAttributeToArray('id') as $aRow)
|
||||
{
|
||||
$aSharers[] = $aRow['id'];
|
||||
}
|
||||
@@ -186,7 +186,7 @@ abstract class UserRightsAddOnAPI
|
||||
$oOrgField = new FieldExpression('org_id', $sShareClass);
|
||||
$oSearchShares->AddConditionExpression(new BinaryExpression($oOrgField, 'IN', $oListExpr));
|
||||
$aShared = array();
|
||||
foreach($oSearchShares->ToDataArray(array($sShareAttCode)) as $aRow)
|
||||
foreach($oSearchShares->SelectAttributeToArray($sShareAttCode) as $aRow)
|
||||
{
|
||||
$aShared[] = $aRow[$sShareAttCode];
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -58,6 +58,9 @@ $progress-bar-error-bg-color: #F56565 !default;
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Animations */
|
||||
@keyframes progress_bar_color_ongoing {
|
||||
|
||||
@@ -51,7 +51,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
|
||||
@@ -36,7 +36,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
|
||||
@@ -49,7 +49,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
|
||||
@@ -36,7 +36,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
|
||||
@@ -48,7 +48,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
|
||||
@@ -50,7 +50,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
// Database inconsistencies
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'DB Tools~~',
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
// Database inconsistencies
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'DB Tools~~',
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
// Database inconsistencies
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'DB Tools~~',
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
// Database inconsistencies
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'DB Tools~~',
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -12,7 +12,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'Инструменты БД',
|
||||
'DBTools:Class' => 'Класс',
|
||||
'DBTools:Title' => 'Инструменты обслуживания базы данных~~',
|
||||
'DBTools:Title' => 'Инструменты обслуживания базы данных',
|
||||
'DBTools:ErrorsFound' => 'Найденные ошибки',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -25,7 +25,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
// Database inconsistencies
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'DB Tools~~',
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -56,7 +56,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Some user accounts have no profile at all~~',
|
||||
'DBAnalyzer-Integrity-HKInvalid' => 'Broken hierarchical key `%1$s`~~',
|
||||
'DBAnalyzer-Fetch-Count-Error' => 'Fetch count error in `%1$s`, %2$d entries fetched / %3$d counted~~',
|
||||
'DBAnalyzer-Integrity-FinalClass' => 'Field `%2$s`.`%1$s` must have the same value than `%3$s`.`%1$s`~~',
|
||||
'DBAnalyzer-Integrity-FinalClass' => 'Field `%2$s`.`%1$s` must have the same value as `%3$s`.`%1$s`~~',
|
||||
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contains a valid class~~',
|
||||
));
|
||||
|
||||
@@ -90,5 +90,5 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'DBTools:LostAttachments:Step:RestoreResults:Results' => '%1$d/%2$d 的附件被还原.',
|
||||
|
||||
'DBTools:LostAttachments:StoredAsInlineImage' => 'Stored as inline image~~',
|
||||
'DBTools:LostAttachments:History' => '附件 "%1$s" restored with DB 工具~~'
|
||||
'DBTools:LostAttachments:History' => '附件 "%1$s" restored with DB 工具'
|
||||
));
|
||||
|
||||
@@ -29,9 +29,9 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Attachments:History_File_Removed' => 'Attachment %1$s removed.~~',
|
||||
'Attachments:AddAttachment' => 'Add attachment: ~~',
|
||||
'Attachments:UploadNotAllowedOnThisSystem' => 'File upload in NOT allowed on this system.~~',
|
||||
'Attachment:Max_Go' => '(Maximum file size: %1$s Go)~~',
|
||||
'Attachment:Max_Mo' => '(Maximum file size: %1$s Mo)~~',
|
||||
'Attachment:Max_Ko' => '(Maximum file size: %1$s Ko)~~',
|
||||
'Attachment:Max_Go' => '(Maximum file size: %1$s GB)~~',
|
||||
'Attachment:Max_Mo' => '(Maximum file size: %1$s MB)~~',
|
||||
'Attachment:Max_Ko' => '(Maximum file size: %1$s KB)~~',
|
||||
'Attachments:NoAttachment' => 'No attachment. ~~',
|
||||
'Attachments:PreviewNotAvailable' => 'Preview not available for this type of attachment.~~',
|
||||
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
|
||||
|
||||
@@ -29,9 +29,9 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Attachments:History_File_Removed' => 'Attachment %1$s removed.~~',
|
||||
'Attachments:AddAttachment' => 'Add attachment: ~~',
|
||||
'Attachments:UploadNotAllowedOnThisSystem' => 'File upload in NOT allowed on this system.~~',
|
||||
'Attachment:Max_Go' => '(Maximum file size: %1$s Go)~~',
|
||||
'Attachment:Max_Mo' => '(Maximum file size: %1$s Mo)~~',
|
||||
'Attachment:Max_Ko' => '(Maximum file size: %1$s Ko)~~',
|
||||
'Attachment:Max_Go' => '(Maximum file size: %1$s GB)~~',
|
||||
'Attachment:Max_Mo' => '(Maximum file size: %1$s MB)~~',
|
||||
'Attachment:Max_Ko' => '(Maximum file size: %1$s KB)~~',
|
||||
'Attachments:NoAttachment' => 'No attachment. ~~',
|
||||
'Attachments:PreviewNotAvailable' => 'Preview not available for this type of attachment.~~',
|
||||
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
|
||||
|
||||
@@ -52,7 +52,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Attachment/Attribute:item_class+' => '~~',
|
||||
'Class:Attachment/Attribute:item_id' => '项目',
|
||||
'Class:Attachment/Attribute:item_id+' => '~~',
|
||||
'Class:Attachment/Attribute:item_org_id' => 'Item 组织~~',
|
||||
'Class:Attachment/Attribute:item_org_id' => 'Item 组织',
|
||||
'Class:Attachment/Attribute:item_org_id+' => '',
|
||||
'Class:Attachment/Attribute:contents' => '内容',
|
||||
'Class:Attachment/Attribute:contents+' => '',
|
||||
|
||||
@@ -25,8 +25,8 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'bkp-backup-running' => 'A backup is running. Please wait...~~',
|
||||
'bkp-restore-running' => 'A restore is running. Please wait...~~',
|
||||
|
||||
'Menu:BackupStatus' => 'Scheduled Backups~~',
|
||||
'bkp-status-title' => 'Scheduled Backups~~',
|
||||
'Menu:BackupStatus' => 'Backups~~',
|
||||
'bkp-status-title' => 'Backups~~',
|
||||
'bkp-status-checks' => 'Settings and checks~~',
|
||||
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s~~',
|
||||
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.~~',
|
||||
@@ -48,7 +48,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'bkp-status-backups-auto' => 'Scheduled backups~~',
|
||||
'bkp-status-backups-manual' => 'Manual backups~~',
|
||||
'bkp-status-backups-none' => 'No backup yet~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s.~~',
|
||||
'bkp-next-backup-unknown' => 'The next backup is <b>not scheduled</b> yet.~~',
|
||||
'bkp-button-backup-now' => 'Backup now!~~',
|
||||
'bkp-button-restore-now' => 'Restore!~~',
|
||||
|
||||
@@ -25,8 +25,8 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'bkp-backup-running' => 'A backup is running. Please wait...~~',
|
||||
'bkp-restore-running' => 'A restore is running. Please wait...~~',
|
||||
|
||||
'Menu:BackupStatus' => 'Scheduled Backups~~',
|
||||
'bkp-status-title' => 'Scheduled Backups~~',
|
||||
'Menu:BackupStatus' => 'Backups~~',
|
||||
'bkp-status-title' => 'Backups~~',
|
||||
'bkp-status-checks' => 'Settings and checks~~',
|
||||
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s~~',
|
||||
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.~~',
|
||||
@@ -48,7 +48,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'bkp-status-backups-auto' => 'Scheduled backups~~',
|
||||
'bkp-status-backups-manual' => 'Manual backups~~',
|
||||
'bkp-status-backups-none' => 'No backup yet~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s.~~',
|
||||
'bkp-next-backup-unknown' => 'The next backup is <b>not scheduled</b> yet.~~',
|
||||
'bkp-button-backup-now' => 'Backup now!~~',
|
||||
'bkp-button-restore-now' => 'Restore!~~',
|
||||
|
||||
@@ -25,8 +25,8 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'bkp-backup-running' => 'A backup is running. Please wait...~~',
|
||||
'bkp-restore-running' => 'A restore is running. Please wait...~~',
|
||||
|
||||
'Menu:BackupStatus' => 'Scheduled Backups~~',
|
||||
'bkp-status-title' => 'Scheduled Backups~~',
|
||||
'Menu:BackupStatus' => 'Backups~~',
|
||||
'bkp-status-title' => 'Backups~~',
|
||||
'bkp-status-checks' => 'Settings and checks~~',
|
||||
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s~~',
|
||||
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.~~',
|
||||
@@ -48,7 +48,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'bkp-status-backups-auto' => 'Scheduled backups~~',
|
||||
'bkp-status-backups-manual' => 'Manual backups~~',
|
||||
'bkp-status-backups-none' => 'No backup yet~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s.~~',
|
||||
'bkp-next-backup-unknown' => 'The next backup is <b>not scheduled</b> yet.~~',
|
||||
'bkp-button-backup-now' => 'Backup now!~~',
|
||||
'bkp-button-restore-now' => 'Restore!~~',
|
||||
|
||||
@@ -25,8 +25,8 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'bkp-backup-running' => 'A backup is running. Please wait...~~',
|
||||
'bkp-restore-running' => 'A restore is running. Please wait...~~',
|
||||
|
||||
'Menu:BackupStatus' => 'Scheduled Backups~~',
|
||||
'bkp-status-title' => 'Scheduled Backups~~',
|
||||
'Menu:BackupStatus' => 'Backups~~',
|
||||
'bkp-status-title' => 'Backups~~',
|
||||
'bkp-status-checks' => 'Settings and checks~~',
|
||||
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s~~',
|
||||
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.~~',
|
||||
@@ -48,7 +48,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'bkp-status-backups-auto' => 'Scheduled backups~~',
|
||||
'bkp-status-backups-manual' => 'Manual backups~~',
|
||||
'bkp-status-backups-none' => 'No backup yet~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s.~~',
|
||||
'bkp-next-backup-unknown' => 'The next backup is <b>not scheduled</b> yet.~~',
|
||||
'bkp-button-backup-now' => 'Backup now!~~',
|
||||
'bkp-button-restore-now' => 'Restore!~~',
|
||||
|
||||
@@ -25,8 +25,8 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'bkp-backup-running' => 'A backup is running. Please wait...~~',
|
||||
'bkp-restore-running' => 'A restore is running. Please wait...~~',
|
||||
|
||||
'Menu:BackupStatus' => 'Scheduled Backups~~',
|
||||
'bkp-status-title' => 'Scheduled Backups~~',
|
||||
'Menu:BackupStatus' => 'Backups~~',
|
||||
'bkp-status-title' => 'Backups~~',
|
||||
'bkp-status-checks' => 'Settings and checks~~',
|
||||
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s~~',
|
||||
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.~~',
|
||||
@@ -48,7 +48,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'bkp-status-backups-auto' => 'Scheduled backups~~',
|
||||
'bkp-status-backups-manual' => 'Manual backups~~',
|
||||
'bkp-status-backups-none' => 'No backup yet~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s.~~',
|
||||
'bkp-next-backup-unknown' => 'The next backup is <b>not scheduled</b> yet.~~',
|
||||
'bkp-button-backup-now' => 'Backup now!~~',
|
||||
'bkp-button-restore-now' => 'Restore!~~',
|
||||
|
||||
@@ -1397,7 +1397,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink' => 'Bejövő',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink+' => 'bejövő link',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink' => 'Kimenő',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink+' => 'kimenő link~~',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink+' => 'kimenő link',
|
||||
));
|
||||
|
||||
//
|
||||
|
||||
@@ -103,7 +103,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:FunctionalCI/Attribute:org_id+' => '',
|
||||
'Class:FunctionalCI/Attribute:organization_name' => 'Organization name~~',
|
||||
'Class:FunctionalCI/Attribute:organization_name+' => 'Common name~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity' => 'Business criticity~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity' => 'Business criticality~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity+' => '~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity/Value:high' => 'high~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity/Value:high+' => 'high~~',
|
||||
@@ -261,7 +261,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:DatacenterDevice/Attribute:enclosure_name+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:nb_u' => 'Rack units~~',
|
||||
'Class:DatacenterDevice/Attribute:nb_u+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:managementip' => 'Management ip~~',
|
||||
'Class:DatacenterDevice/Attribute:managementip' => 'Management IP~~',
|
||||
'Class:DatacenterDevice/Attribute:managementip+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:powerA_id' => 'PowerA source~~',
|
||||
'Class:DatacenterDevice/Attribute:powerA_id+' => '~~',
|
||||
@@ -318,9 +318,9 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Server/Attribute:osversion_id+' => '~~',
|
||||
'Class:Server/Attribute:osversion_name' => 'OS version name~~',
|
||||
'Class:Server/Attribute:osversion_name+' => '~~',
|
||||
'Class:Server/Attribute:oslicence_id' => 'OS licence~~',
|
||||
'Class:Server/Attribute:oslicence_id' => 'OS license~~',
|
||||
'Class:Server/Attribute:oslicence_id+' => '~~',
|
||||
'Class:Server/Attribute:oslicence_name' => 'OS licence name~~',
|
||||
'Class:Server/Attribute:oslicence_name' => 'OS license name~~',
|
||||
'Class:Server/Attribute:oslicence_name+' => '~~',
|
||||
'Class:Server/Attribute:cpu' => 'CPU',
|
||||
'Class:Server/Attribute:cpu+' => '',
|
||||
@@ -528,9 +528,9 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:SoftwareInstance/Attribute:software_id+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:software_name' => 'Software',
|
||||
'Class:SoftwareInstance/Attribute:software_name+' => '',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_id' => 'Software licence~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_id' => 'Software license~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_id+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_name' => 'Software licence name~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_name' => 'Software license name~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_name+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:path' => 'Path~~',
|
||||
'Class:SoftwareInstance/Attribute:path+' => '~~',
|
||||
@@ -718,9 +718,9 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:VirtualMachine/Attribute:osversion_id+' => '~~',
|
||||
'Class:VirtualMachine/Attribute:osversion_name' => 'OS version name~~',
|
||||
'Class:VirtualMachine/Attribute:osversion_name+' => '~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_id' => 'OS licence~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_id' => 'OS license~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_id+' => '~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_name' => 'OS licence name~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_name' => 'OS license name~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_name+' => '~~',
|
||||
'Class:VirtualMachine/Attribute:cpu' => 'CPU~~',
|
||||
'Class:VirtualMachine/Attribute:cpu+' => '~~',
|
||||
@@ -867,7 +867,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Software+' => '',
|
||||
'Class:Software/Attribute:name' => 'Nome',
|
||||
'Class:Software/Attribute:name+' => '',
|
||||
'Class:Software/Attribute:vendor' => 'vendor~~',
|
||||
'Class:Software/Attribute:vendor' => 'Vendor~~',
|
||||
'Class:Software/Attribute:vendor+' => '~~',
|
||||
'Class:Software/Attribute:version' => 'Version~~',
|
||||
'Class:Software/Attribute:version+' => '~~',
|
||||
@@ -889,8 +889,8 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Software/Attribute:softwareinstance_list+' => 'All the software instances for this software~~',
|
||||
'Class:Software/Attribute:softwarepatch_list' => 'Software Patches~~',
|
||||
'Class:Software/Attribute:softwarepatch_list+' => 'All the patchs for this software~~',
|
||||
'Class:Software/Attribute:softwarelicence_list' => 'Software Licences~~',
|
||||
'Class:Software/Attribute:softwarelicence_list+' => 'All the licences for this software~~',
|
||||
'Class:Software/Attribute:softwarelicence_list' => 'Software Licenses~~',
|
||||
'Class:Software/Attribute:softwarelicence_list+' => 'All the licenses for this software~~',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -906,7 +906,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Patch/Attribute:documents_list+' => 'All the documents linked to this patch~~',
|
||||
'Class:Patch/Attribute:description' => 'Descrizione',
|
||||
'Class:Patch/Attribute:description+' => '',
|
||||
'Class:Patch/Attribute:finalclass' => 'Type~~',
|
||||
'Class:Patch/Attribute:finalclass' => 'Patch sub-class~~',
|
||||
'Class:Patch/Attribute:finalclass+' => 'Name of the final class~~',
|
||||
));
|
||||
|
||||
@@ -941,7 +941,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Licence
|
||||
// Class: License
|
||||
//
|
||||
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
@@ -950,7 +950,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Licence/Attribute:name' => 'Nome',
|
||||
'Class:Licence/Attribute:name+' => '',
|
||||
'Class:Licence/Attribute:documents_list' => 'Documents~~',
|
||||
'Class:Licence/Attribute:documents_list+' => 'All the documents linked to this licence~~',
|
||||
'Class:Licence/Attribute:documents_list+' => 'All the documents linked to this license~~',
|
||||
'Class:Licence/Attribute:org_id' => 'Proprietario',
|
||||
'Class:Licence/Attribute:org_id+' => '',
|
||||
'Class:Licence/Attribute:organization_name' => 'Organization name~~',
|
||||
@@ -971,7 +971,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Licence/Attribute:perpetual/Value:no+' => 'no~~',
|
||||
'Class:Licence/Attribute:perpetual/Value:yes' => 'yes~~',
|
||||
'Class:Licence/Attribute:perpetual/Value:yes+' => 'yes~~',
|
||||
'Class:Licence/Attribute:finalclass' => 'Type~~',
|
||||
'Class:Licence/Attribute:finalclass' => 'License sub-class~~',
|
||||
'Class:Licence/Attribute:finalclass+' => 'Name of the final class~~',
|
||||
));
|
||||
|
||||
@@ -980,16 +980,16 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
//
|
||||
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:OSLicence' => 'OS Licence~~',
|
||||
'Class:OSLicence' => 'OS License~~',
|
||||
'Class:OSLicence+' => '~~',
|
||||
'Class:OSLicence/Attribute:osversion_id' => 'OS version~~',
|
||||
'Class:OSLicence/Attribute:osversion_id+' => '~~',
|
||||
'Class:OSLicence/Attribute:osversion_name' => 'OS version name~~',
|
||||
'Class:OSLicence/Attribute:osversion_name+' => '~~',
|
||||
'Class:OSLicence/Attribute:virtualmachines_list' => 'Virtual machines~~',
|
||||
'Class:OSLicence/Attribute:virtualmachines_list+' => 'All the virtual machines where this licence is used~~',
|
||||
'Class:OSLicence/Attribute:servers_list' => 'servers~~',
|
||||
'Class:OSLicence/Attribute:servers_list+' => 'All the servers where this licence is used~~',
|
||||
'Class:OSLicence/Attribute:virtualmachines_list+' => 'All the virtual machines where this license is used~~',
|
||||
'Class:OSLicence/Attribute:servers_list' => 'Servers~~',
|
||||
'Class:OSLicence/Attribute:servers_list+' => 'All the servers where this license is used~~',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -997,14 +997,14 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
//
|
||||
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:SoftwareLicence' => 'Software Licence~~',
|
||||
'Class:SoftwareLicence' => 'Software License~~',
|
||||
'Class:SoftwareLicence+' => '~~',
|
||||
'Class:SoftwareLicence/Attribute:software_id' => 'Software~~',
|
||||
'Class:SoftwareLicence/Attribute:software_id+' => '~~',
|
||||
'Class:SoftwareLicence/Attribute:software_name' => 'Software name~~',
|
||||
'Class:SoftwareLicence/Attribute:software_name+' => '~~',
|
||||
'Class:SoftwareLicence/Attribute:softwareinstance_list' => 'Software instances~~',
|
||||
'Class:SoftwareLicence/Attribute:softwareinstance_list+' => 'All the systems where this licence is used~~',
|
||||
'Class:SoftwareLicence/Attribute:softwareinstance_list+' => 'All the systems where this license is used~~',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -1012,11 +1012,11 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
//
|
||||
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:lnkDocumentToLicence' => 'Link Document / Licence~~',
|
||||
'Class:lnkDocumentToLicence' => 'Link Document / License~~',
|
||||
'Class:lnkDocumentToLicence+' => '~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_id' => 'Licence~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_id' => 'License~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_id+' => '~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_name' => 'Licence name~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_name' => 'License name~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_name+' => '~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:document_id' => 'Document~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:document_id+' => '~~',
|
||||
@@ -1278,7 +1278,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:NetworkInterface+' => '',
|
||||
'Class:NetworkInterface/Attribute:name' => 'Name~~',
|
||||
'Class:NetworkInterface/Attribute:name+' => '~~',
|
||||
'Class:NetworkInterface/Attribute:finalclass' => 'Type~~',
|
||||
'Class:NetworkInterface/Attribute:finalclass' => 'NetworkInterface sub-class~~',
|
||||
'Class:NetworkInterface/Attribute:finalclass+' => 'Name of the final class~~',
|
||||
));
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
*/
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
|
||||
'Menu:ConfigEditor' => 'Configuration~~',
|
||||
'Menu:ConfigEditor' => 'General Configuration~~',
|
||||
'config-edit-title' => 'Configuration File Editor~~',
|
||||
'config-edit-intro' => 'Be very cautious when editing the configuration file.~~',
|
||||
'config-apply' => 'Apply~~',
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
*/
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
|
||||
'Menu:ConfigEditor' => 'Configuration~~',
|
||||
'Menu:ConfigEditor' => 'General Configuration~~',
|
||||
'config-edit-title' => 'Configuration File Editor~~',
|
||||
'config-edit-intro' => 'Be very cautious when editing the configuration file.~~',
|
||||
'config-apply' => 'Apply~~',
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
*/
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
|
||||
'Menu:ConfigEditor' => 'Configuration~~',
|
||||
'Menu:ConfigEditor' => 'General Configuration~~',
|
||||
'config-edit-title' => 'Configuration File Editor~~',
|
||||
'config-edit-intro' => 'Be very cautious when editing the configuration file.~~',
|
||||
'config-apply' => 'Apply~~',
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
*/
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
|
||||
'Menu:ConfigEditor' => 'Configuration~~',
|
||||
'Menu:ConfigEditor' => 'General Configuration~~',
|
||||
'config-edit-title' => 'Configuration File Editor~~',
|
||||
'config-edit-intro' => 'Be very cautious when editing the configuration file.~~',
|
||||
'config-apply' => 'Apply~~',
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
*/
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
|
||||
'Menu:ConfigEditor' => 'Configuration~~',
|
||||
'Menu:ConfigEditor' => 'General Configuration~~',
|
||||
'config-edit-title' => 'Configuration File Editor~~',
|
||||
'config-edit-intro' => 'Be very cautious when editing the configuration file.~~',
|
||||
'config-apply' => 'Apply~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'iTopUpdate:UI:PageTitle' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:SelectUpdateFile' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrade~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance, no user can access the application. You have to run a setup or restore the application archive to return in normal mode.~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Confirm Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrading~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance in read-only mode. You have to run a setup to return in normal mode.~~',
|
||||
'itop-core-update:UI:UpdateDone' => 'Application Upgrade~~',
|
||||
|
||||
'itop-core-update/Operation:SelectUpdateFile/Title' => 'Application Upgrade~~',
|
||||
@@ -68,10 +68,10 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'iTopUpdate:UI:PostMaxSize' => 'PHP ini value post_max_size: %1$s~~',
|
||||
'iTopUpdate:UI:UploadMaxFileSize' => 'PHP ini value upload_max_filesize: %1$s~~',
|
||||
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking filesystem~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking filesystem failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking filesystem failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking filesystem failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking files~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking files failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking files failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking files failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~',
|
||||
@@ -85,7 +85,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'iTopUpdate:UI:SetupMessage:FilesArchive' => 'Archive application files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CopyFiles' => 'Copy new version files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CheckCompile' => 'Check application upgrade~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application and database~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => 'Upgrade database~~',
|
||||
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Exiting maintenance mode~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDone' => 'Upgrade completed~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'iTopUpdate:UI:PageTitle' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:SelectUpdateFile' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrade~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance, no user can access the application. You have to run a setup or restore the application archive to return in normal mode.~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Confirm Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrading~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance in read-only mode. You have to run a setup to return in normal mode.~~',
|
||||
'itop-core-update:UI:UpdateDone' => 'Application Upgrade~~',
|
||||
|
||||
'itop-core-update/Operation:SelectUpdateFile/Title' => 'Application Upgrade~~',
|
||||
@@ -68,10 +68,10 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'iTopUpdate:UI:PostMaxSize' => 'PHP ini value post_max_size: %1$s~~',
|
||||
'iTopUpdate:UI:UploadMaxFileSize' => 'PHP ini value upload_max_filesize: %1$s~~',
|
||||
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking filesystem~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking filesystem failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking filesystem failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking filesystem failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking files~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking files failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking files failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking files failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~',
|
||||
@@ -85,7 +85,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'iTopUpdate:UI:SetupMessage:FilesArchive' => 'Archive application files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CopyFiles' => 'Copy new version files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CheckCompile' => 'Check application upgrade~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application and database~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => 'Upgrade database~~',
|
||||
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Exiting maintenance mode~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDone' => 'Upgrade completed~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'iTopUpdate:UI:PageTitle' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:SelectUpdateFile' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrade~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance, no user can access the application. You have to run a setup or restore the application archive to return in normal mode.~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Confirm Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrading~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance in read-only mode. You have to run a setup to return in normal mode.~~',
|
||||
'itop-core-update:UI:UpdateDone' => 'Application Upgrade~~',
|
||||
|
||||
'itop-core-update/Operation:SelectUpdateFile/Title' => 'Application Upgrade~~',
|
||||
@@ -68,10 +68,10 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'iTopUpdate:UI:PostMaxSize' => 'PHP ini value post_max_size: %1$s~~',
|
||||
'iTopUpdate:UI:UploadMaxFileSize' => 'PHP ini value upload_max_filesize: %1$s~~',
|
||||
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking filesystem~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking filesystem failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking filesystem failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking filesystem failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking files~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking files failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking files failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking files failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~',
|
||||
@@ -85,7 +85,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'iTopUpdate:UI:SetupMessage:FilesArchive' => 'Archive application files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CopyFiles' => 'Copy new version files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CheckCompile' => 'Check application upgrade~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application and database~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => 'Upgrade database~~',
|
||||
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Exiting maintenance mode~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDone' => 'Upgrade completed~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'iTopUpdate:UI:PageTitle' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:SelectUpdateFile' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrade~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance, no user can access the application. You have to run a setup or restore the application archive to return in normal mode.~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Confirm Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrading~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance in read-only mode. You have to run a setup to return in normal mode.~~',
|
||||
'itop-core-update:UI:UpdateDone' => 'Application Upgrade~~',
|
||||
|
||||
'itop-core-update/Operation:SelectUpdateFile/Title' => 'Application Upgrade~~',
|
||||
@@ -68,10 +68,10 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'iTopUpdate:UI:PostMaxSize' => 'PHP ini value post_max_size: %1$s~~',
|
||||
'iTopUpdate:UI:UploadMaxFileSize' => 'PHP ini value upload_max_filesize: %1$s~~',
|
||||
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking filesystem~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking filesystem failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking filesystem failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking filesystem failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking files~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking files failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking files failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking files failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~',
|
||||
@@ -85,7 +85,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'iTopUpdate:UI:SetupMessage:FilesArchive' => 'Archive application files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CopyFiles' => 'Copy new version files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CheckCompile' => 'Check application upgrade~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application and database~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => 'Upgrade database~~',
|
||||
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Exiting maintenance mode~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDone' => 'Upgrade completed~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'iTopUpdate:UI:PageTitle' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:SelectUpdateFile' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrade~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance, no user can access the application. You have to run a setup or restore the application archive to return in normal mode.~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Confirm Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrading~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance in read-only mode. You have to run a setup to return in normal mode.~~',
|
||||
'itop-core-update:UI:UpdateDone' => 'Application Upgrade~~',
|
||||
|
||||
'itop-core-update/Operation:SelectUpdateFile/Title' => 'Application Upgrade~~',
|
||||
@@ -68,10 +68,10 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'iTopUpdate:UI:PostMaxSize' => 'PHP ini value post_max_size: %1$s~~',
|
||||
'iTopUpdate:UI:UploadMaxFileSize' => 'PHP ini value upload_max_filesize: %1$s~~',
|
||||
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking filesystem~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking filesystem failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking filesystem failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking filesystem failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking files~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking files failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking files failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking files failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~',
|
||||
@@ -85,7 +85,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'iTopUpdate:UI:SetupMessage:FilesArchive' => 'Archive application files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CopyFiles' => 'Copy new version files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CheckCompile' => 'Check application upgrade~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application and database~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => 'Upgrade database~~',
|
||||
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Exiting maintenance mode~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDone' => 'Upgrade completed~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'iTopUpdate:UI:PageTitle' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:SelectUpdateFile' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrade~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance, no user can access the application. You have to run a setup or restore the application archive to return in normal mode.~~',
|
||||
'itop-core-update:UI:ConfirmUpdate' => 'Confirm Application Upgrade~~',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrading~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance in read-only mode. You have to run a setup to return in normal mode.~~',
|
||||
'itop-core-update:UI:UpdateDone' => 'Application Upgrade~~',
|
||||
|
||||
'itop-core-update/Operation:SelectUpdateFile/Title' => 'Application Upgrade~~',
|
||||
@@ -68,10 +68,10 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'iTopUpdate:UI:PostMaxSize' => 'PHP ini value post_max_size: %1$s~~',
|
||||
'iTopUpdate:UI:UploadMaxFileSize' => 'PHP ini value upload_max_filesize: %1$s~~',
|
||||
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking filesystem~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking filesystem failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking filesystem failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking filesystem failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking files~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking files failed (%1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking files failed (File not exist %1$s)~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking files failed~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~',
|
||||
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~',
|
||||
@@ -85,7 +85,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'iTopUpdate:UI:SetupMessage:FilesArchive' => 'Archive application files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CopyFiles' => 'Copy new version files~~',
|
||||
'iTopUpdate:UI:SetupMessage:CheckCompile' => 'Check application upgrade~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application and database~~',
|
||||
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => 'Upgrade database~~',
|
||||
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Exiting maintenance mode~~',
|
||||
'iTopUpdate:UI:SetupMessage:UpdateDone' => 'Upgrade completed~~',
|
||||
|
||||
@@ -25,7 +25,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'itop-core-update:UI:SelectUpdateFile' => '应用升级',
|
||||
'itop-core-update:UI:ConfirmUpdate' => ' 升级',
|
||||
'itop-core-update:UI:UpdateCoreFiles' => '应用升级',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance, no user can access the application. You have to run a setup or restore the application archive to return in normal mode.~~',
|
||||
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance in read-only mode. You have to run a setup to return in normal mode.~~',
|
||||
'itop-core-update:UI:UpdateDone' => '应用升级',
|
||||
|
||||
'itop-core-update/Operation:SelectUpdateFile/Title' => '应用升级',
|
||||
|
||||
@@ -62,7 +62,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:FAQ/Attribute:error_code+' => '',
|
||||
'Class:FAQ/Attribute:key_words' => '关键字',
|
||||
'Class:FAQ/Attribute:key_words+' => '',
|
||||
'Class:FAQ/Attribute:domains' => '领域~~',
|
||||
'Class:FAQ/Attribute:domains' => '领域',
|
||||
));
|
||||
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~',
|
||||
'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~',
|
||||
));
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~',
|
||||
'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~',
|
||||
));
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Fehlende Datei: %1$s',
|
||||
'FilesInformation:Error:CorruptedFile' => 'Datei %1$s ist beschädigt',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'Datei %1$s kann nicht geschrieben werden',
|
||||
));
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Archivo faltante: %1$s',
|
||||
'FilesInformation:Error:CorruptedFile' => 'El archivo %1$s está corrupto',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'No se puede escribir al archivo %1$s',
|
||||
));
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~',
|
||||
'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~',
|
||||
));
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~',
|
||||
'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~',
|
||||
));
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Ontbrekend bestand: %1$s',
|
||||
'FilesInformation:Error:CorruptedFile' => 'Corrupt bestand: %1$s',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'Kan niet schrijven naar bestand %1$s',
|
||||
));
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Brakujący plik: %1$s',
|
||||
'FilesInformation:Error:CorruptedFile' => 'Plik %1$s jest uszkodzony',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'Nie można zapisać do pliku %1$s',
|
||||
));
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Faltando arquivo: %1$s',
|
||||
'FilesInformation:Error:CorruptedFile' => 'Arquivo %1$s está corrompido',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'Sem permissão de escrita no arquivo %1$s',
|
||||
));
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Файл %1$s отсутствует',
|
||||
'FilesInformation:Error:CorruptedFile' => 'Файл %1$s повреждён',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'Невозможно выполнить запись в файл %1$s',
|
||||
));
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~',
|
||||
'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~',
|
||||
));
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~',
|
||||
'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~',
|
||||
));
|
||||
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
*/
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
// Errors
|
||||
'FilesInformation:Error:MissingFile' => '文件丢失: %1$s~~',
|
||||
'FilesInformation:Error:MissingFile' => '文件丢失: %1$s',
|
||||
'FilesInformation:Error:CorruptedFile' => '文件 %1$s 已损坏',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
|
||||
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ~~',
|
||||
'FilesInformation:Error:CantWriteToFile' => '文件 %1$s 无法写入',
|
||||
));
|
||||
|
||||
|
||||
19
datamodels/2.x/itop-hub-connector/TokenValidation.php
Normal file
19
datamodels/2.x/itop-hub-connector/TokenValidation.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
class TokenValidation
|
||||
{
|
||||
// construct function
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
public function isSetupTokenValid($sParamToken) : bool
|
||||
{
|
||||
if (!file_exists(APPROOT.'data/.setup')) {
|
||||
return false;
|
||||
}
|
||||
$sSetupToken = trim(file_get_contents(APPROOT.'data/.setup'));
|
||||
unlink(APPROOT.'data/.setup');
|
||||
return $sParamToken === $sSetupToken;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -30,7 +30,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'Menu:iTopHub:MyExtensions+' => 'See the list of extensions deployed on this instance of '.ITOP_APPLICATION_SHORT.'~~',
|
||||
'Menu:iTopHub:BrowseExtensions' => 'Get extensions from iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions+' => 'Browse for more extensions on iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful '.ITOP_APPLICATION_SHORT.' extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful iTop extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>',
|
||||
'iTopHub:GoBtn' => 'Go To iTop Hub~~',
|
||||
'iTopHub:CloseBtn' => 'Close~~',
|
||||
'iTopHub:GoBtn:Tooltip' => 'Jump to www.itophub.io~~',
|
||||
|
||||
@@ -30,7 +30,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Menu:iTopHub:MyExtensions+' => 'See the list of extensions deployed on this instance of '.ITOP_APPLICATION_SHORT.'~~',
|
||||
'Menu:iTopHub:BrowseExtensions' => 'Get extensions from iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions+' => 'Browse for more extensions on iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful '.ITOP_APPLICATION_SHORT.' extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful iTop extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>',
|
||||
'iTopHub:GoBtn' => 'Go To iTop Hub~~',
|
||||
'iTopHub:CloseBtn' => 'Close~~',
|
||||
'iTopHub:GoBtn:Tooltip' => 'Jump to www.itophub.io~~',
|
||||
|
||||
@@ -65,7 +65,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'iTopHub:Uncompressing' => 'Uncompressing extensions...',
|
||||
'iTopHub:InstallationWelcome' => 'Installation of the extensions downloaded from iTop Hub',
|
||||
'iTopHub:DBBackupLabel' => 'Instance backup',
|
||||
'iTopHub:DBBackupSentence' => 'Do a backup of the database and iTop configuration before updating',
|
||||
'iTopHub:DBBackupSentence' => 'Do a backup of the database and '.ITOP_APPLICATION_SHORT.' configuration before updating',
|
||||
'iTopHub:DeployBtn' => 'Deploy !',
|
||||
'iTopHub:DatabaseBackupProgress' => 'Instance backup...',
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Menu:iTopHub:MyExtensions+' => 'See the list of extensions deployed on this instance of '.ITOP_APPLICATION_SHORT.'~~',
|
||||
'Menu:iTopHub:BrowseExtensions' => 'Get extensions from iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions+' => 'Browse for more extensions on iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful '.ITOP_APPLICATION_SHORT.' extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful iTop extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>',
|
||||
'iTopHub:GoBtn' => 'Go To iTop Hub~~',
|
||||
'iTopHub:CloseBtn' => 'Close~~',
|
||||
'iTopHub:GoBtn:Tooltip' => 'Jump to www.itophub.io~~',
|
||||
|
||||
@@ -24,13 +24,13 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:iTopHub' => 'iTop Hub~~',
|
||||
'Menu:iTopHub:Register' => 'Connect to iTop Hub~~',
|
||||
'Menu:iTopHub:Register+' => 'Go to iTop Hub to update your iTop instance~~',
|
||||
'Menu:iTopHub:Register:Description' => '<p>Get access to your community platform iTop Hub!<br>Find all the content and information you need, manage your instances through personalized tools & install more extensions.<br><br>By connecting to the Hub from this page, you will push information about this iTop instance into the Hub.</p>~~',
|
||||
'Menu:iTopHub:Register+' => 'Go to iTop Hub to update your '.ITOP_APPLICATION_SHORT.' instance~~',
|
||||
'Menu:iTopHub:Register:Description' => '<p>Get access to your community platform iTop Hub!<br>Find all the content and information you need, manage your instances through personalized tools & install more extensions.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>',
|
||||
'Menu:iTopHub:MyExtensions' => 'Deployed extensions~~',
|
||||
'Menu:iTopHub:MyExtensions+' => 'See the list of extensions deployed on this instance of '.ITOP_APPLICATION_SHORT.'~~',
|
||||
'Menu:iTopHub:BrowseExtensions' => 'Get extensions from iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions+' => 'Browse for more extensions on iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful iTop extensions !<br>Find the ones that will help you customize and adapt iTop to your processes.<br><br>By connecting to the Hub from this page, you will push information about this iTop instance into the Hub.</p>~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful iTop extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>',
|
||||
'iTopHub:GoBtn' => 'Go To iTop Hub~~',
|
||||
'iTopHub:CloseBtn' => 'Close~~',
|
||||
'iTopHub:GoBtn:Tooltip' => 'Jump to www.itophub.io~~',
|
||||
@@ -46,7 +46,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'iTopHub:Landing:Status' => 'Deployment status~~',
|
||||
'iTopHub:Landing:Install' => 'Deploying extensions...~~',
|
||||
'iTopHub:CompiledOK' => 'Compilation successful.~~',
|
||||
'iTopHub:ConfigurationSafelyReverted' => 'Error detected during deployment!<br>iTop configuration has NOT been modified.~~',
|
||||
'iTopHub:ConfigurationSafelyReverted' => 'Error detected during deployment!<br>'.ITOP_APPLICATION_SHORT.' configuration has NOT been modified.~~',
|
||||
'iTopHub:FailAuthent' => 'Authentication failed for this action.~~',
|
||||
|
||||
'iTopHub:InstalledExtensions' => 'Extensions deployed on this instance~~',
|
||||
@@ -55,7 +55,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'iTopHub:ExtensionCategory:Remote' => 'Extensions deployed from iTop Hub~~',
|
||||
'iTopHub:ExtensionCategory:Remote+' => 'The following extensions have been deployed from iTop Hub:~~',
|
||||
'iTopHub:NoExtensionInThisCategory' => 'There is no extension in this category~~',
|
||||
'iTopHub:NoExtensionInThisCategory+' => 'Browse iTop Hub to find the extensions that will help you customize and adapt iTop to your processes !~~',
|
||||
'iTopHub:NoExtensionInThisCategory+' => 'Browse iTop Hub to find the extensions that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes !',
|
||||
'iTopHub:ExtensionNotInstalled' => 'Not installed~~',
|
||||
'iTopHub:GetMoreExtensions' => 'Get extensions from iTop Hub...~~',
|
||||
|
||||
@@ -64,7 +64,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'iTopHub:Uncompressing' => 'Uncompressing extensions...~~',
|
||||
'iTopHub:InstallationWelcome' => 'Installation of the extensions downloaded from iTop Hub~~',
|
||||
'iTopHub:DBBackupLabel' => 'Instance backup~~',
|
||||
'iTopHub:DBBackupSentence' => 'Do a backup of the database and iTop configuration before updating~~',
|
||||
'iTopHub:DBBackupSentence' => 'Do a backup of the database and '.ITOP_APPLICATION_SHORT.' configuration before updating',
|
||||
'iTopHub:DeployBtn' => 'Deploy !~~',
|
||||
'iTopHub:DatabaseBackupProgress' => 'Instance backup...~~',
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Menu:iTopHub:MyExtensions+' => 'See the list of extensions deployed on this instance of '.ITOP_APPLICATION_SHORT.'~~',
|
||||
'Menu:iTopHub:BrowseExtensions' => 'Get extensions from iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions+' => 'Browse for more extensions on iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful '.ITOP_APPLICATION_SHORT.' extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful iTop extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>',
|
||||
'iTopHub:GoBtn' => 'Go To iTop Hub~~',
|
||||
'iTopHub:CloseBtn' => 'Close~~',
|
||||
'iTopHub:GoBtn:Tooltip' => 'Jump to www.itophub.io~~',
|
||||
|
||||
@@ -18,7 +18,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Menu:iTopHub:MyExtensions+' => 'Расширения, развернутые на данном экземпляре '.ITOP_APPLICATION_SHORT,
|
||||
'Menu:iTopHub:BrowseExtensions' => 'Получить расширения из iTop Hub',
|
||||
'Menu:iTopHub:BrowseExtensions+' => 'Найдите дополнительные расширения на iTop Hub',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful '.ITOP_APPLICATION_SHORT.' extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful iTop extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>',
|
||||
'iTopHub:GoBtn' => 'Go To iTop Hub~~',
|
||||
'iTopHub:CloseBtn' => 'Close~~',
|
||||
'iTopHub:GoBtn:Tooltip' => 'Jump to www.itophub.io~~',
|
||||
|
||||
@@ -30,7 +30,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Menu:iTopHub:MyExtensions+' => 'See the list of extensions deployed on this instance of '.ITOP_APPLICATION_SHORT.'~~',
|
||||
'Menu:iTopHub:BrowseExtensions' => 'Get extensions from iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions+' => 'Browse for more extensions on iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful '.ITOP_APPLICATION_SHORT.' extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful iTop extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>',
|
||||
'iTopHub:GoBtn' => 'Go To iTop Hub~~',
|
||||
'iTopHub:CloseBtn' => 'Close~~',
|
||||
'iTopHub:GoBtn:Tooltip' => 'Jump to www.itophub.io~~',
|
||||
|
||||
@@ -30,7 +30,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Menu:iTopHub:MyExtensions+' => 'See the list of extensions deployed on this instance of '.ITOP_APPLICATION_SHORT.'~~',
|
||||
'Menu:iTopHub:BrowseExtensions' => 'Get extensions from iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions+' => 'Browse for more extensions on iTop Hub~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful '.ITOP_APPLICATION_SHORT.' extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>~~',
|
||||
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hub’s store, your one stop place to find wonderful iTop extensions !<br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.<br><br>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>',
|
||||
'iTopHub:GoBtn' => 'Go To iTop Hub~~',
|
||||
'iTopHub:CloseBtn' => 'Close~~',
|
||||
'iTopHub:GoBtn:Tooltip' => 'Jump to www.itophub.io~~',
|
||||
|
||||
@@ -257,13 +257,15 @@ function MakeDataToPost($sTargetRoute)
|
||||
return $aDataToPost;
|
||||
}
|
||||
|
||||
try {
|
||||
require_once(APPROOT.'/application/application.inc.php');
|
||||
require_once(APPROOT.'/application/itopwebpage.class.inc.php');
|
||||
require_once(APPROOT.'/setup/extensionsmap.class.inc.php');
|
||||
require_once('hubconnectorpage.class.inc.php');
|
||||
|
||||
require_once(APPROOT.'/application/startup.inc.php');
|
||||
try
|
||||
{
|
||||
require_once (APPROOT.'/application/application.inc.php');
|
||||
require_once (APPROOT.'/application/itopwebpage.class.inc.php');
|
||||
require_once (APPROOT.'/setup/extensionsmap.class.inc.php');
|
||||
require_once ('hubconnectorpage.class.inc.php');
|
||||
|
||||
require_once (APPROOT.'/application/startup.inc.php');
|
||||
require_once('TokenValidation.php');
|
||||
|
||||
$sTargetRoute = utils::ReadParam('target', ''); // ||browse_extensions|deploy_extensions|
|
||||
|
||||
@@ -279,15 +281,24 @@ try {
|
||||
|
||||
switch ($sTargetRoute) {
|
||||
case 'inform_after_setup':
|
||||
// Hidden IFRAME at the end of the setup
|
||||
require_once(APPROOT.'/application/ajaxwebpage.class.inc.php');
|
||||
$oPage = new NiceWebPage('');
|
||||
$aDataToPost = MakeDataToPost($sTargetRoute);
|
||||
$oPage->add('<form id="hub_launch_form" action="'.$sHubUrlStateless.'" method="post">');
|
||||
$oPage->add('<input type="hidden" name="json" value="'.htmlentities(json_encode($aDataToPost), ENT_QUOTES, 'UTF-8').'">');
|
||||
$oPage->add_ready_script('$("#hub_launch_form").submit();');
|
||||
break;
|
||||
// Hidden IFRAME at the end of the setup
|
||||
require_once (APPROOT.'/application/ajaxwebpage.class.inc.php');
|
||||
|
||||
$sParamToken = utils::ReadParam('setup_token');
|
||||
$oTokenValidation = new TokenValidation();
|
||||
$bIsTokenValid = $oTokenValidation->isSetupTokenValid($sParamToken);
|
||||
if (UserRights::IsAdministrator() || $bIsTokenValid) {
|
||||
$oPage = new NiceWebPage('');
|
||||
$aDataToPost = MakeDataToPost($sTargetRoute);
|
||||
$oPage->add('<form id="hub_launch_form" action="' . $sHubUrlStateless . '" method="post">');
|
||||
$oPage->add('<input type="hidden" name="json" value="' . htmlentities(json_encode($aDataToPost), ENT_QUOTES, 'UTF-8') . '">');
|
||||
$oPage->add_ready_script('$("#hub_launch_form").submit();');
|
||||
} else {
|
||||
IssueLog::Error('TokenValidation failed on inform_after_setup page');
|
||||
throw new Exception("Not allowed");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// All other cases, special "Hub like" web page
|
||||
if ($sTargetRoute == 'view_dashboard') {
|
||||
|
||||
@@ -92,6 +92,8 @@ const OAuthConnect = function(sClass, sId, sAjaxUri) {
|
||||
function (oData) {
|
||||
if (oData.status === 'success') {
|
||||
oOpenSignInWindow(oData.data.authorization_url, 'OAuth authorization')
|
||||
} else {
|
||||
alert(oData.error_description);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
@@ -379,6 +379,11 @@ HTML
|
||||
<default_value>no</default_value>
|
||||
<is_null_allowed>true</is_null_allowed>
|
||||
</field>
|
||||
<field id="tenant" xsi:type="AttributeString">
|
||||
<sql>tenant</sql>
|
||||
<default_value>common</default_value>
|
||||
<is_null_allowed>false</is_null_allowed>
|
||||
</field>
|
||||
</fields>
|
||||
<presentation>
|
||||
<details>
|
||||
@@ -404,15 +409,18 @@ HTML
|
||||
<item id="redirect_url">
|
||||
<rank>50</rank>
|
||||
</item>
|
||||
<item id="client_id">
|
||||
<item id="tenant">
|
||||
<rank>60</rank>
|
||||
</item>
|
||||
<item id="client_secret">
|
||||
<item id="client_id">
|
||||
<rank>70</rank>
|
||||
</item>
|
||||
<item id="mailbox_list">
|
||||
<item id="client_secret">
|
||||
<rank>80</rank>
|
||||
</item>
|
||||
<item id="mailbox_list">
|
||||
<rank>90</rank>
|
||||
</item>
|
||||
</items>
|
||||
</item>
|
||||
</items>
|
||||
|
||||
@@ -10,8 +10,8 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'Menu:CreateMailbox' => 'Create a mailbox...~~',
|
||||
'Menu:OAuthClient' => 'OAuth Client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:GenerateTokens' => 'Generate access tokens...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
|
||||
'Menu:GenerateTokens' => 'Generate access token...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Menu:CreateMailbox' => 'Create a mailbox...~~',
|
||||
'Menu:OAuthClient' => 'OAuth Client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:GenerateTokens' => 'Generate access tokens...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
|
||||
'Menu:GenerateTokens' => 'Generate access token...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
|
||||
|
||||
@@ -93,6 +93,8 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:OAuthClientAzure/Attribute:used_for_smtp+' => 'At least one OAuth client must have this flag to “Yes”, if you want iTop to use it for sending mails',
|
||||
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:yes' => 'Yes',
|
||||
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:no' => 'No',
|
||||
'Class:OAuthClientAzure/Attribute:tenant' => 'Tenant',
|
||||
'Class:OAuthClientAzure/Attribute:tenant+' => 'Tenant ID of the configured application. For multi-tenant application, use "common".',
|
||||
));
|
||||
|
||||
//
|
||||
|
||||
@@ -10,8 +10,8 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', [
|
||||
'Menu:CreateMailbox' => 'Create a mailbox...~~',
|
||||
'Menu:OAuthClient' => 'OAuth Client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:GenerateTokens' => 'Generate access tokens...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
|
||||
'Menu:GenerateTokens' => 'Generate access token...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'Menu:CreateMailbox' => 'Create a mailbox...~~',
|
||||
'Menu:OAuthClient' => 'OAuth Client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:GenerateTokens' => 'Generate access tokens...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
|
||||
'Menu:GenerateTokens' => 'Generate access token...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Menu:CreateMailbox' => 'Create a mailbox...~~',
|
||||
'Menu:OAuthClient' => 'OAuth Client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:GenerateTokens' => 'Generate access tokens...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
|
||||
'Menu:GenerateTokens' => 'Generate access token...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'Menu:CreateMailbox' => 'Create a mailbox...~~',
|
||||
'Menu:OAuthClient' => 'OAuth Client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:GenerateTokens' => 'Generate access tokens...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
|
||||
'Menu:GenerateTokens' => 'Generate access token...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Menu:CreateMailbox' => 'Create a mailbox...~~',
|
||||
'Menu:OAuthClient' => 'OAuth Client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:GenerateTokens' => 'Generate access tokens...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
|
||||
'Menu:GenerateTokens' => 'Generate access token...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Menu:CreateMailbox' => 'Create a mailbox...~~',
|
||||
'Menu:OAuthClient' => 'OAuth Client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:GenerateTokens' => 'Generate access tokens...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
|
||||
'Menu:GenerateTokens' => 'Generate access token...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Menu:CreateMailbox' => 'Create a mailbox...~~',
|
||||
'Menu:OAuthClient' => 'OAuth Client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:GenerateTokens' => 'Generate access tokens...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
|
||||
'Menu:GenerateTokens' => 'Generate access token...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Menu:CreateMailbox' => 'Create a mailbox...~~',
|
||||
'Menu:OAuthClient' => 'OAuth Client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:GenerateTokens' => 'Generate access tokens...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
|
||||
'Menu:GenerateTokens' => 'Generate access token...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'Menu:CreateMailbox' => 'Create a mailbox...~~',
|
||||
'Menu:OAuthClient' => 'OAuth Client~~',
|
||||
'Menu:OAuthClient+' => '~~',
|
||||
'Menu:GenerateTokens' => 'Generate access tokens...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
|
||||
'Menu:GenerateTokens' => 'Generate access token...~~',
|
||||
'Menu:RegenerateTokens' => 'Regenerate access token...~~',
|
||||
|
||||
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ use cmdbAbstractObject;
|
||||
use Combodo\iTop\Application\TwigBase\Controller\Controller;
|
||||
use Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory;
|
||||
use Dict;
|
||||
use Exception;
|
||||
use IssueLog;
|
||||
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
|
||||
use MetaModel;
|
||||
@@ -32,8 +33,13 @@ class AjaxOauthClientController extends Controller
|
||||
|
||||
$aResult = ['status' => 'success', 'data' => []];
|
||||
|
||||
$sAuthorizationUrl = OAuthClientProviderFactory::GetAuthorizationUrl($oOAuthClient);
|
||||
$aResult['data']['authorization_url'] = $sAuthorizationUrl;
|
||||
try {
|
||||
$sAuthorizationUrl = OAuthClientProviderFactory::GetAuthorizationUrl($oOAuthClient);
|
||||
$aResult['data']['authorization_url'] = $sAuthorizationUrl;
|
||||
} catch (Exception $oException) {
|
||||
$aResult['status'] = 'error';
|
||||
$aResult['error_description'] = $oException->getMessage();
|
||||
}
|
||||
|
||||
$this->DisplayJSONPage($aResult);
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s : %2$s',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => 'Vyplňte prosím následující informace:',
|
||||
'Brick:Portal:Object:Form:Message:Saved' => 'Uloženo',
|
||||
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s uloženo~~',
|
||||
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s uloženo',
|
||||
'Brick:Portal:Object:Search:Regular:Title' => 'Vybrat %1$s (%2$s)',
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Vybrat %1$s (%2$s)',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%1$s: %2$s~~',
|
||||
|
||||
@@ -81,7 +81,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Brick:Portal:UserProfile:Password:ConfirmPassword' => 'Confirm password~~',
|
||||
'Brick:Portal:UserProfile:Password:CantChangeContactAdministrator' => 'To change your password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal informations~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information~~',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo~~',
|
||||
));
|
||||
|
||||
@@ -129,8 +129,8 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Brick:Portal:Object:Name' => 'Object~~',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s~~',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %2$s (%1$s)~~',
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s : %2$s~~',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => 'Please, fill the following informations:~~',
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s: %2$s~~',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => 'Please, complete the following information:~~',
|
||||
'Brick:Portal:Object:Form:Message:Saved' => 'Saved~~',
|
||||
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s saved~~',
|
||||
'Brick:Portal:Object:Search:Regular:Title' => 'Select %1$s (%2$s)~~',
|
||||
|
||||
@@ -81,7 +81,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Brick:Portal:UserProfile:Password:ConfirmPassword' => 'Confirm password~~',
|
||||
'Brick:Portal:UserProfile:Password:CantChangeContactAdministrator' => 'To change your password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal informations~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information~~',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo~~',
|
||||
));
|
||||
|
||||
@@ -129,8 +129,8 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Brick:Portal:Object:Name' => 'Object~~',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s~~',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %2$s (%1$s)~~',
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s : %2$s~~',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => 'Please, fill the following informations:~~',
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s: %2$s~~',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => 'Please, complete the following information:~~',
|
||||
'Brick:Portal:Object:Form:Message:Saved' => 'Saved~~',
|
||||
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s saved~~',
|
||||
'Brick:Portal:Object:Search:Regular:Title' => 'Select %1$s (%2$s)~~',
|
||||
|
||||
@@ -81,7 +81,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'Brick:Portal:UserProfile:Password:ConfirmPassword' => 'Confirm password~~',
|
||||
'Brick:Portal:UserProfile:Password:CantChangeContactAdministrator' => 'To change your password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal informations~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information~~',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo~~',
|
||||
));
|
||||
|
||||
@@ -129,8 +129,8 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'Brick:Portal:Object:Name' => 'Object~~',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s~~',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %2$s (%1$s)~~',
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s : %2$s~~',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => 'Please, fill the following informations:~~',
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s: %2$s~~',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => 'Please, complete the following information:~~',
|
||||
'Brick:Portal:Object:Form:Message:Saved' => 'Saved~~',
|
||||
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s saved~~',
|
||||
'Brick:Portal:Object:Search:Regular:Title' => 'Select %1$s (%2$s)~~',
|
||||
|
||||
@@ -81,7 +81,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Brick:Portal:UserProfile:Password:ConfirmPassword' => 'Confirm password~~',
|
||||
'Brick:Portal:UserProfile:Password:CantChangeContactAdministrator' => 'To change your password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal informations~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information~~',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo~~',
|
||||
));
|
||||
|
||||
@@ -129,8 +129,8 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Brick:Portal:Object:Name' => 'Object~~',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s~~',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %2$s (%1$s)~~',
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s : %2$s~~',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => 'Please, fill the following informations:~~',
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s: %2$s~~',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => 'Please, complete the following information:~~',
|
||||
'Brick:Portal:Object:Form:Message:Saved' => 'Saved~~',
|
||||
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s saved~~',
|
||||
'Brick:Portal:Object:Search:Regular:Title' => 'Select %1$s (%2$s)~~',
|
||||
|
||||
@@ -81,7 +81,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Brick:Portal:UserProfile:Password:ConfirmPassword' => 'Confirm password~~',
|
||||
'Brick:Portal:UserProfile:Password:CantChangeContactAdministrator' => 'To change your password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal informations~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information~~',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo~~',
|
||||
));
|
||||
|
||||
@@ -129,8 +129,8 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Brick:Portal:Object:Name' => 'Object~~',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s~~',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %2$s (%1$s)~~',
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s : %2$s~~',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => 'Please, fill the following informations:~~',
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s: %2$s~~',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => 'Please, complete the following information:~~',
|
||||
'Brick:Portal:Object:Form:Message:Saved' => 'Saved~~',
|
||||
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s saved~~',
|
||||
'Brick:Portal:Object:Search:Regular:Title' => 'Select %1$s (%2$s)~~',
|
||||
|
||||
@@ -132,7 +132,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Brick:Portal:Object:Form:View:Title' => '%1$s : %2$s',
|
||||
'Brick:Portal:Object:Form:Stimulus:Title' => '请填写下列信息:',
|
||||
'Brick:Portal:Object:Form:Message:Saved' => '已保存',
|
||||
'Brick:Portal:Object:Form:Message:ObjectSaved' => '已保存 %1$s~~',
|
||||
'Brick:Portal:Object:Form:Message:ObjectSaved' => '已保存 %1$s',
|
||||
'Brick:Portal:Object:Search:Regular:Title' => '选择 %1$s (%2$s)',
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => '选择 %1$s (%2$s)',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%1$s: %2$s~~',
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user