WIP - add type of AuditFilterField

This commit is contained in:
Anne-Cath
2025-01-14 09:52:35 +01:00
parent 892fb8f6d4
commit 2a82c25e04
21 changed files with 694 additions and 393 deletions

View File

@@ -1,26 +1,19 @@
<?php
// Copyright (C) 2010-2024 Combodo SAS
//
// This file is part of iTop.
//
// 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.
//
// iTop is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/*
* @copyright Copyright (C) 2010-2025 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @since 3.3.0
*/
use Combodo\iTop\Application\UI\Base\Component\Alert\AlertUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
use Combodo\iTop\Application\UI\Base\Component\Html\HtmlFactory;
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectOptionUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectUIBlockFactory;
use Combodo\iTop\Application\UI\Base\UIBlock;
/**
* This class allow to define placeholder to be used in the audit "rule" and audit "category" OQL queries.
* This class allow to define placeholder to be used in the audit 'rule' and audit 'category' OQL queries.
*
* @copyright Copyright (C) 2010-2025 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
@@ -32,27 +25,38 @@ class AuditFilterField extends cmdbAbstractObject
{
$aParams = array
(
"category" => "application,grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "placeholder",
"state_attcode" => "",
"reconc_keys" => array('placeholder'),
"db_table" => "priv_auditfilterfield",
"db_key_field" => "id",
"db_finalclass_field" => "",
'category' => 'application,grant_by_profile',
'key_type' => 'autoincrement',
'name_attcode' => 'placeholder',
'state_attcode' => '',
'reconc_keys' => array('placeholder'),
'db_table' => 'priv_auditfilterfield',
'db_key_field' => 'id',
'db_finalclass_field' => '',
'uniqueness_rules' => array(
'no_duplicate' => array(
'attributes' => array(
0 => 'placeholder',
),
'filter' => '',
'disabled' => false,
'is_blocking' => true,
),
),
'style' => new ormStyle(null, null, null, null, null, '../images/icons/icons8-audit-filtre.svg'),
);
MetaModel::Init_Params($aParams);
MetaModel::Init_AddAttribute(new AttributeString("placeholder", array("allowed_values" => null, "sql" => "placeholder", "default_value" => "", "is_null_allowed" => false, "depends_on" => array(), "validation_pattern"=>'^\w+$')));
MetaModel::Init_AddAttribute(new AttributeString("label", array("allowed_values" => null, "sql" => "label", "default_value" => "", "is_null_allowed" => false, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum("select_oql,select_values,number,date" , true), "display_style"=>'list', "sql"=>'type', "default_value"=>'', "is_null_allowed"=>true, "depends_on"=>array(), "always_load_in_tables"=>false)));
MetaModel::Init_AddAttribute(new AttributeOQL("oql", array("allowed_values" => null, "sql" => "oql", "default_value" => "", "is_null_allowed" => true, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeString("values", array("allowed_values" => null, "sql" => "values", "default_value" => "", "is_null_allowed" => true, "depends_on" => array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('label', 'placeholder', 'oql', 'values')); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('list', array('label', 'placeholder', 'oql','values')); // Attributes to be displayed for a list
MetaModel::Init_SetZListItems('details', array('label', 'placeholder', 'type', 'oql', 'values')); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('list', array('label', 'placeholder', 'type', 'oql','values')); // Attributes to be displayed for a list
// Search criteria
MetaModel::Init_SetZListItems('standard_search', array('label', 'placeholder')); // Criteria of the std search form
MetaModel::Init_SetZListItems('standard_search', array('label', 'placeholder','type')); // Criteria of the std search form
MetaModel::Init_SetZListItems('default_search', array('label', 'placeholder')); // Criteria of the advanced search form
}
/**
@@ -75,4 +79,243 @@ class AuditFilterField extends cmdbAbstractObject
$oPage->AddUiBlock(AlertUIBlockFactory::MakeForInformation('In OQL query, you can use this placeholders:', '')->AddSubBlock(new Html($sHtml)));
}
}
protected function RegisterEventListeners()
{
parent::RegisterEventListeners();
// listenerId = CheckUsersUpdate
$this->RegisterCRUDListener('EVENT_DB_CHECK_TO_WRITE', 'CheckPlaceholderName', 1, 'itop-structure');
$this->RegisterCRUDListener('EVENT_DB_CHECK_TO_WRITE', 'CheckMandatoryFields', 2, 'itop-structure');
}
public function CheckPlaceholderName(Combodo\iTop\Service\Events\EventData $oEventData)
{
$aChanges = $this->ListChanges();
if (array_key_exists('placeholder', $aChanges)) {
$sPlaceholder = $this->Get('placeholder');
if (str_starts_with('this->', $sPlaceholder)) {
$this->AddCheckIssue(Dict::S('Class:AuditFilterField/Attribute:placeholder:Error:StartWith','this'));
}
if (str_starts_with('current_user', $sPlaceholder)) {
$this->AddCheckIssue(Dict::S('Class:AuditFilterField/Attribute:placeholder:Error:StartWith','current_user'));
}
if (str_starts_with('current_contact', $sPlaceholder)) {
$this->AddCheckIssue(Dict::S('Class:AuditFilterField/Attribute:placeholder:Error:StartWith','current_contact'));
}
if (in_array($sPlaceholder, ['current_user', 'current_contact']) ) {
$this->AddCheckIssue(Dict::S('Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord', $sPlaceholder));
}
}
}
public function CheckMandatoryFields(Combodo\iTop\Service\Events\EventData $oEventData)
{
switch ($this->Get('type')) {
case 'select_oql':
if (utils::IsNullOrEmptyString($this->Get('oql'))) {
$this->AddCheckIssue(Dict::S('Class:AuditFilterField/Attribute:oql:Error:Empty'));
}
break;
case 'select_values':
if (utils::IsNullOrEmptyString($this->Get('values'))) {
$this->AddCheckIssue(Dict::S('Class:AuditFilterField/Attribute:values:Error:Empty'));
}
break;
// case 'number':
// case 'date':
// break;
}
}
public function GetFieldBlock(WebPage $oPage, string $sCurrentValue = ''): UIBlock
{
switch ($this->Get('type')) {
case 'select_oql':
$sFieldName = $this->Get('placeholder');
$sOql = $this->Get('oql');
$sLabel = $this->Get('label');
$oSearch = DBObjectSearch::FromOQL($sOql);
$oAllowedValues = new DBObjectSet($oSearch);
$oAllowedValues->SetShowObsoleteData(utils::ShowObsoleteData());
$iMaxComboLength = MetaModel::GetConfig()->Get('max_combo_length');
$bIsAutocomplete = $oAllowedValues->CountExceeds($iMaxComboLength);
$sWrapperCssClass = $bIsAutocomplete ? 'field_input_extkey ibo-input-wrapper ibo-input-select-wrapper--with-buttons ibo-input-select-autocomplete-wrapper' : 'ibo-input-select-wrapper';
$sHTMLValue = "<div class=\"field_input_zone $sWrapperCssClass\">";
// We just need to compare the number of entries with MaxComboLength, so no need to get the real count.
if (!$bIsAutocomplete) {
// Discrete list of values, use a SELECT or RADIO buttons depending on the config
$sHelpText = '';
$aOptions = [];
$aOptions['value'] = "";
$aOptions['label'] = Dict::S('UI:SelectOne');
$oAllowedValues->Rewind();
$sClassAllowed = $oAllowedValues->GetClass();
$bAddingValue = false;
$aFieldsToLoad = [];
$aComplementAttributeSpec = MetaModel::GetNameSpec($oAllowedValues->GetClass(), FriendlyNameType::COMPLEMENTARY);
$sFormatAdditionalField = $aComplementAttributeSpec[0];
$aAdditionalField = $aComplementAttributeSpec[1];
if (count($aAdditionalField) > 0) {
$bAddingValue = true;
$aFieldsToLoad[$sClassAllowed] = $aAdditionalField;
}
$sObjectImageAttCode = MetaModel::GetImageAttributeCode($sClassAllowed);
if (!empty($sObjectImageAttCode)) {
$aFieldsToLoad[$sClassAllowed][] = $sObjectImageAttCode;
}
$aFieldsToLoad[$sClassAllowed][] = 'friendlyname';
$oAllowedValues->OptimizeColumnLoad($aFieldsToLoad);
$oSelect = SelectUIBlockFactory::MakeForSelect($sFieldName, $sFieldName);
$oSelect->AddCSSClass('ibo-input-field-wrapper');
while ($oChoiceItem = $oAllowedValues->Fetch()) {
$sOptionName = utils::HtmlEntityDecode($oChoiceItem->GetName());
if ($bAddingValue) {
$aArguments = [];
foreach ($aAdditionalField as $sAdditionalField) {
array_push($aArguments, $oAllowedValues->Get($sAdditionalField));
}
$sOptionName .= '<br><i>' . utils::HtmlEntities(vsprintf($sFormatAdditionalField, $aArguments)) . '</i>';;
}
if (!empty($sObjectImageAttCode)) {
// Try to retrieve image for contact
/** @var \ormDocument $oImage */
$oImage = $oAllowedValues->Get($sObjectImageAttCode);
if (!$oImage->IsEmpty()) {
$sPicturepictureUrl = $oImage->GetDisplayURL($sClassAllowed, $oChoiceItem->GetKey(), $sObjectImageAttCode);
$sOptionName .= ' <span class="ibo-input-select--autocomplete-item-image" style="background-image: url(' . $sPicturepictureUrl . ');"></span>';
} else {
$sInitials = utils::FormatInitialsForMedallion(utils::ToAcronym($oChoiceItem->Get('friendlyname')));
$sOptionName .= ' <span class="ibo-input-select--autocomplete-item-image" ">' . $sInitials . '</span>';
}
}
$oOption = SelectOptionUIBlockFactory::MakeForSelectOption($oChoiceItem->GetKey(), $sOptionName, ($sCurrentValue == $oChoiceItem->GetKey()));
$oSelect->AddOption($oOption);
}
$sInputType = CmdbAbstractObject::ENUM_INPUT_TYPE_DROPDOWN_DECORATED;
$sJsonOptions = str_replace("'", "\'", str_replace('\\', '\\\\', json_encode($aOptions)));
$oPage->add_ready_script(
<<<JS
let select$sFieldName = $('#$sFieldName').selectize({
plugins:['custom_itop', 'selectize-plugin-a11y'],
});
JS
);
return $oSelect;
} else {
// Too many choices, use an autocomplete
// Check that the given value is allowed
$oSearch = $oAllowedValues->GetFilter();
$oSearch->AddCondition('id', $sCurrentValue);
$oSet = new DBObjectSet($oSearch);
$sClass = $oSet->GetClass();
if ($oSet->Count() == 0) {
$sCurrentValue = null;
}
if (is_null($sCurrentValue) || ($sCurrentValue == 0)) // Null values are displayed as ''
{
$sDisplayValue = '';
} else {
$sDisplayValue = MetaModel::GetObject($sClass, $sCurrentValue)->GetName();
}
$iMinChars = MetaModel::GetConfig()->Get('min_autocomplete_chars'); //@@@ $this->oAttDef->GetMinAutoCompleteChars();
// the input for the auto-complete
$sInputType = CmdbAbstractObject::ENUM_INPUT_TYPE_AUTOCOMPLETE;
$sHTMLValue .= "<input class=\"field_autocomplete ibo-input ibo-input-select ibo-input-select-autocomplete\" type=\"text\" id=\"label_$sFieldName\" value=\"$sDisplayValue\" placeholder='...'/>";
// another hidden input to store & pass the object's Id
$sHTMLValue .= "<input type=\"hidden\" id=\"$sFieldName\" name=\"{$sFieldName}\" value=\"" . utils::HtmlEntities($sCurrentValue) . "\" />\n";
$sMessage = Dict::S('UI:Message:EmptyList:UseSearchForm');
$oPage->add_ready_script(
<<<EOF
oACWidget_{$sFieldName} = new ExtKeyWidget('$sFieldName', '$sClass', '$sOql', '$sLabel', false, null, '{$sFieldName}', true, false);
oACWidget_{$sFieldName}.emptyHtml = "<div style=\"background: #fff; border:0; text-align:center; vertical-align:middle;\"><p>$sMessage</p></div>";
oACWidget_{$sFieldName}.AddAutocomplete($iMinChars, '');
if ($('#ac_dlg_{$sFieldName}').length == 0)
{
$('body').append('<div id="ac_dlg_{$sFieldName}"></div>');
}
EOF
);
$sHTMLValue .= "<div class=\"ibo-input-select--action-buttons\">";
$sHTMLValue .= "<a href=\"#\" class=\"ibo-input-select--action-button ibo-input-select--action-button--clear ibo-is-hidden\" id=\"mini_clear_{$sFieldName}\" onClick=\"$('#$sFieldName').val('');$('#label_$sFieldName').val(''); $('#label_$sFieldName').data('selected_value', '');\" data-tooltip-content='" . Dict::S('UI:Button:Clear') . "'><i class=\"fas fa-times\"></i></a>";
$sHTMLValue .= "<a href=\"#\" class=\"ibo-input-select--action-button ibo-input-select--action-button--search\" id=\"mini_search_{$sFieldName}\" onClick=\"oACWidget_{$sFieldName}.Search();\" data-tooltip-content='" . Dict::S('UI:Button:Search') . "'><i class=\"fas fa-search\"></i></a>";
if (MetaModel::IsHierarchicalClass($sClass) !== false) {
$sHTMLValue .= "<a href=\"#\" class=\"ibo-input-select--action-button ibo-input-select--action-button--hierarchy\" id=\"mini_tree_{$sFieldName}\" onClick=\"oACWidget_{$sFieldName}.HKDisplay();\" data-tooltip-content='" . Dict::S('UI:Button:SearchInHierarchy') . "'><i class=\"fas fa-sitemap\"></i></a>";
$oPage->add_ready_script(
<<<JS
if ($('#ac_tree_{$sFieldName}').length == 0)
{
$('body').append('<div id="ac_tree_{$sFieldName}"></div>');
}
JS
);
}
}
$sHTMLValue .= "</div>";
$sHTMLValue .= "</div>";
return new Html($sHTMLValue);
break;
case 'select_values':
$aListValues = explode(',',$this->Get('values'));
$oSelect = SelectUIBlockFactory::MakeForSelect($this->Get('placeholder'), $this->Get('placeholder'));
$oSelect->AddCSSClass('ibo-input-field-wrapper');
foreach($aListValues as $sValue) {
$oSelect->AddOption(SelectOptionUIBlockFactory::MakeForSelectOption($sValue, $sValue, ($sCurrentValue == $sValue)));
}
return $oSelect;
break;
case 'number':
$oInput = HtmlFactory::MakeRaw('<input type="number" id="'.$this->Get('placeholder').'" name="'.$this->Get('placeholder').'" value="'.$sCurrentValue.'"/>');
return $oInput;
break;
case 'date':
$sFieldName = $this->Get('placeholder');
$sDateFormatDatePicker = AttributeDate::GetFormat()->ToDatePicker();
$oInput = HtmlFactory::MakeRaw('<input type="text" id="'.$sFieldName.'" name="'.$sFieldName.'" value="'.$sCurrentValue.'"/>');
$oPage->add_ready_script(<<<EOF
$('i#$sFieldName').datepicker({
showOn: 'button',
buttonImage: '../images/calendar.png',
buttonImageOnly: true,
dateFormat: '$sDateFormatDatePicker',
constrainInput: false,
changeMonth: true,
changeYear: true,
});
EOF);
return $oInput;
break;
default:
return new Html('Not implemented yet');
}
}
}

View File

@@ -26,9 +26,6 @@
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Application\UI\Base\Component\Alert\AlertUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
require_once(APPROOT.'/application/cmdbabstract.class.inc.php');
class AuditCategory extends cmdbAbstractObject

View File

@@ -798,10 +798,10 @@
</fields>
</class>
<class id="AuditFilterField" _delta="define">
<!-- Generated by toolkit/export-class-to-meta.php -->
<parent>cmdbAbstractObject</parent>
<parent>cmdbAbstractObject</parent>
<properties>
<category>application, grant_by_profile</category>
<abstract>true</abstract>
</properties>
<fields>
<field id="placeholder" xsi:type="AttributeString"/>

View File

@@ -12,18 +12,30 @@
//
Dict::Add('CS CZ', 'Czech', 'Čeština', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => 'Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => 'Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => 'Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);
/**
*

View File

@@ -12,18 +12,30 @@
//
Dict::Add('DA DA', 'Danish', 'Dansk', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => ' Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => ' Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => ' Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);
/**

View File

@@ -12,18 +12,30 @@
//
Dict::Add('DE DE', 'German', 'Deutsch', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => ' Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => ' Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => ' Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);
/**

View File

@@ -20,18 +20,31 @@
//
Dict::Add('EN US', 'English', 'English', array(
'Class:AuditFilterField' => 'Audit Filter Fields',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.',
'Class:AuditFilterField/Attribute:label' => 'Label',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests',
'Class:AuditFilterField' => 'Audit Filter Fields',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.',
'Class:AuditFilterField/Attribute:label' => 'Label',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"',
'Class:AuditFilterField/Attribute:oql' => 'Query for select',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories',
'Class:AuditFilterField/Attribute:type' =>'Field type',
'Class:AuditFilterField/Attribute:type+' =>'',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => 'Select defined by OQL',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.',
'Class:AuditFilterField/Attribute:type/Value:select_values' => 'Select defined by values',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.',
'Class:AuditFilterField/Attribute:type/Value:number' => 'Number',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.',
'Class:AuditFilterField/Attribute:type/Value:date' => 'Date',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.',
'Class:AuditFilterField/Attribute:oql' => 'Query for select',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory',
'Class:AuditDomain/Select:DependentFields' => 'Please select necessary fields: <br>%1%s',
));
//

View File

@@ -20,18 +20,30 @@
//
Dict::Add('EN GB', 'British English', 'British English', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => 'Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => 'Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => 'Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);

View File

@@ -11,20 +11,32 @@
// Class: AuditFilterField
//
Dict::Add('EN US', 'English', 'English', array(
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
Dict::Add('EN US', 'English', 'English', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
));
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => 'Audit Filter Fields - Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => 'Audit Filter Fields - Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => 'Audit Filter Fields - Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [

View File

@@ -11,18 +11,31 @@
//
Dict::Add('FR FR', 'French', 'Français', [
'Class:AuditFilterField' => 'Filtre pour les audits',
'Class:AuditFilterField+' => 'Dans les Périmètres et les règles d\'audit, vous pouvez utiliser les filtres définis ici pour limiter les objets audités',
'Class:AuditFilterField/Attribute:label' => 'Libellé',
'Class:AuditFilterField/Attribute:label+' => 'Libellé affiché dans l\'écran d\audit',
'Class:AuditFilterField/Attribute:placeholder' => 'Nom de la variable',
'Class:AuditFilterField/Attribute:placeholder+' => 'Nom de la variable utilisé dans les requêtes des Périmètres et des règles d\'audit',
'Class:AuditFilterField' => 'Filtre pour les audits',
'Class:AuditFilterField+' => 'Dans les Périmètres et les règles d\'audit, vous pouvez utiliser les filtres définis ici pour limiter les objets audités',
'Class:AuditFilterField/Attribute:label' => 'Libellé',
'Class:AuditFilterField/Attribute:label+' => 'Libellé affiché dans l\'écran d\audit',
'Class:AuditFilterField/Attribute:placeholder' => 'Nom de la variable',
'Class:AuditFilterField/Attribute:placeholder+' => 'Nom de la variable utilisé dans les requêtes des Périmètres et des règles d\'audit',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'Le nom de la vaiable ne peut pas commencer par le mot réservé "%1$s"',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'Le nom de la vaiable ne peut être le mot réservé "%1$s"',
'Class:AuditFilterField/Attribute:oql' => 'Requête',
'Class:AuditFilterField/Attribute:oql+' => 'Requête de définition de l\'ensemble des objets pouvant être selectionnés pour les règles et les catégories d\'audit',
'Class:AuditFilterField/Attribute:values' => ' Liste des valeurs possibles',
'Class:AuditFilterField/Attribute:values+' => ' Liste des valeurs pouvant être selectionnés pour les règles et les catégories d\'audit',
'Class:AuditFilterField/Attribute:type' =>'Type de champ',
'Class:AuditFilterField/Attribute:type+' =>'',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => 'Select définit par OQL',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => '',
'Class:AuditFilterField/Attribute:type/Value:select_values' => 'Select définit avec une liste de valeurs',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => '',
'Class:AuditFilterField/Attribute:type/Value:number' => 'Nombre',
'Class:AuditFilterField/Attribute:type/Value:number+' => '',
'Class:AuditFilterField/Attribute:type/Value:date' => 'Date',
'Class:AuditFilterField/Attribute:type/Value:date+' => '',
'Class:AuditFilterFieldSelectOQL/Attribute:oql' => 'Requête',
'Class:AuditFilterFieldSelectOQL/Attribute:oql+' => 'Requête de définition de l\'ensemble des objets pouvant être selectionnés pour les règles et les catégories d\'audit',
'Class:AuditFilterFieldSelectValues/Attribute:values' => ' Liste des valeurs possibles',
'Class:AuditFilterFieldSelectValues/Attribute:values+' => ' Liste des valeurs pouvant être selectionnés pour les règles et les catégories d\'audit',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'Si le type sélectionné est "Select définit par OQL", le champ "Oql" est obligatoire',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'Si le type sélectionné est "Select définit avec une liste de valeurs", le champ "Liste des valeurs" est obligatoire',
'Class:AuditDomain/Select:DependentFields' => 'Veuillez sélectionner tous les champs nécessaires :<br>%1%s',
]);

View File

@@ -11,18 +11,30 @@
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => 'Audit Filter Fields - Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => 'Audit Filter Fields - Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => 'Audit Filter Fields - Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);

View File

@@ -11,18 +11,30 @@
//
Dict::Add('IT IT', 'Italian', 'Italiano', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => ' Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => ' Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => ' Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);

View File

@@ -15,18 +15,30 @@
//
Dict::Add('JA JP', 'Japanese', '日本語', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => ' Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => ' Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => ' Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);

View File

@@ -11,18 +11,30 @@
//
Dict::Add('NL NL', 'Dutch', 'Nederlands', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => ' Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => ' Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => ' Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);

View File

@@ -11,18 +11,30 @@
//
Dict::Add('PL PL', 'Polish', 'Polski', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => ' Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => ' Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => ' Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);

View File

@@ -11,18 +11,30 @@
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => ' Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => ' Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => ' Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);

View File

@@ -11,18 +11,30 @@
//
Dict::Add('RU RU', 'Russian', 'Русский', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => ' Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => ' Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => ' Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);

View File

@@ -11,18 +11,30 @@
//
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => ' Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => ' Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => ' Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);

View File

@@ -11,18 +11,30 @@
//
Dict::Add('TR TR', 'Turkish', 'Türkçe', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => ' Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => ' Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => ' Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);

View File

@@ -11,18 +11,30 @@
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField' => 'Audit Filter Fields~~',
'Class:AuditFilterField+' => 'In Audit rules and Audit categories you can use Filter Fields defined here.~~',
'Class:AuditFilterField/Attribute:label' => 'Label~~',
'Class:AuditFilterField/Attribute:label+' => 'Label for select field~~',
'Class:AuditFilterField/Attribute:placeholder' => 'Placeholder~~',
'Class:AuditFilterField/Attribute:placeholder+' => 'The field can be used in Audit rules and Audit categories requests~~',
'Class:AuditFilterField/Attribute:placeholder:Error:StartWithThis' => 'The placeholder can not start with the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:placeholder:Error:ReservedWord' => 'The placeholder can not be the reserved word "%1$s"~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:type' =>'Field type~~',
'Class:AuditFilterField/Attribute:type+' =>'~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql' => ' Select defined by OQL~~',
'Class:AuditFilterField/Attribute:type/Value:select_oql+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select list defined by OQL.~~',
'Class:AuditFilterField/Attribute:type/Value:select_values' => ' Select defined by values~~',
'Class:AuditFilterField/Attribute:type/Value:select_values+' => 'In Audit rules and Audit categories you can use Filter Fields value in a select value list defined here.~~',
'Class:AuditFilterField/Attribute:type/Value:number' => ' Number~~',
'Class:AuditFilterField/Attribute:type/Value:number+' => 'In Audit rules and Audit categories you can use number Filter Fields.~~',
'Class:AuditFilterField/Attribute:type/Value:date' => ' Date~~',
'Class:AuditFilterField/Attribute:type/Value:date+' => 'In Audit rules and Audit categories you can use date Filter Fields.~~',
'Class:AuditFilterField/Attribute:oql' => 'Query for select~~',
'Class:AuditFilterField/Attribute:oql+' => 'OQL query defining the set of objects to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:values' => 'List of avalaible values~~',
'Class:AuditFilterField/Attribute:values+' => ' Defining the list of values to be selected in audit rules and audit categories~~',
'Class:AuditFilterField/Attribute:oql/Error:Empty' => 'If selected type is "Select defined by OQL", Oql field is mandatory~~',
'Class:AuditFilterField/Attribute:values/Error:Empty' => 'If selected type is "Select defined by values", Values field is mandatory~~',
]);

View File

@@ -11,8 +11,6 @@ use Combodo\iTop\Application\UI\Base\Component\Dashlet\DashletFactory;
use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Field\FieldUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectOptionUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Panel\Panel;
use Combodo\iTop\Application\UI\Base\Component\Panel\PanelUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Text\Text;
@@ -23,7 +21,6 @@ use Combodo\iTop\Application\UI\Base\Layout\UIContentBlockUIBlockFactory;
use Combodo\iTop\Application\WebPage\CSVPage;
use Combodo\iTop\Application\WebPage\ErrorPage;
use Combodo\iTop\Application\WebPage\iTopWebPage;
use Combodo\iTop\Core\MetaModel\FriendlyNameType;
/**
* Adds the context parameters to the audit rule query
@@ -152,146 +149,6 @@ function GetRuleResultFilter($iRuleId, $oDefinitionFilter, $oAppContext, $aParam
return $oFilter;
}
function MakeSelectField($oPage, string $sLabel, string $sFieldName, string $sOql, string $sCurrentValue)
{
$oSearch = DBObjectSearch::FromOQL($sOql);
$oAllowedValues = new DBObjectSet($oSearch);
$oAllowedValues->SetShowObsoleteData(utils::ShowObsoleteData());
$iMaxComboLength = MetaModel::GetConfig()->Get('max_combo_length');
$bIsAutocomplete = $oAllowedValues->CountExceeds($iMaxComboLength);
$sWrapperCssClass = $bIsAutocomplete ? 'field_input_extkey ibo-input-wrapper ibo-input-select-wrapper--with-buttons ibo-input-select-autocomplete-wrapper' : 'ibo-input-select-wrapper';
$sHTMLValue = "<div class=\"field_input_zone $sWrapperCssClass\">";
// We just need to compare the number of entries with MaxComboLength, so no need to get the real count.
if (!$bIsAutocomplete) {
// Discrete list of values, use a SELECT or RADIO buttons depending on the config
$sHelpText = '';
$aOptions = [];
$aOptions['value'] = "";
$aOptions['label'] = Dict::S('UI:SelectOne');
$oAllowedValues->Rewind();
$sClassAllowed = $oAllowedValues->GetClass();
$bAddingValue = false;
$aFieldsToLoad = [];
$aComplementAttributeSpec = MetaModel::GetNameSpec($oAllowedValues->GetClass(), FriendlyNameType::COMPLEMENTARY);
$sFormatAdditionalField = $aComplementAttributeSpec[0];
$aAdditionalField = $aComplementAttributeSpec[1];
if (count($aAdditionalField) > 0) {
$bAddingValue = true;
$aFieldsToLoad[$sClassAllowed] = $aAdditionalField;
}
$sObjectImageAttCode = MetaModel::GetImageAttributeCode($sClassAllowed);
if (!empty($sObjectImageAttCode)) {
$aFieldsToLoad[$sClassAllowed][] = $sObjectImageAttCode;
}
$aFieldsToLoad[$sClassAllowed][] = 'friendlyname';
$oAllowedValues->OptimizeColumnLoad($aFieldsToLoad);
$oSelect = SelectUIBlockFactory::MakeForSelect($sFieldName, $sFieldName);
$oSelect->AddCSSClass('ibo-input-field-wrapper');
while ($oChoiceItem = $oAllowedValues->Fetch()) {
$sOptionName = utils::HtmlEntityDecode($oChoiceItem->GetName());
if ($bAddingValue) {
$aArguments = [];
foreach ($aAdditionalField as $sAdditionalField) {
array_push($aArguments, $oAllowedValues->Get($sAdditionalField));
}
$sOptionName .= '<br><i>' . utils::HtmlEntities(vsprintf($sFormatAdditionalField, $aArguments)) . '</i>';;
}
if (!empty($sObjectImageAttCode)) {
// Try to retrieve image for contact
/** @var \ormDocument $oImage */
$oImage = $oAllowedValues->Get($sObjectImageAttCode);
if (!$oImage->IsEmpty()) {
$sPicturepictureUrl = $oImage->GetDisplayURL($sClassAllowed, $oChoiceItem->GetKey(), $sObjectImageAttCode);
$sOptionName .= ' <span class="ibo-input-select--autocomplete-item-image" style="background-image: url(' . $sPicturepictureUrl . ');"></span>';
} else {
$sInitials = utils::FormatInitialsForMedallion(utils::ToAcronym($oChoiceItem->Get('friendlyname')));
$sOptionName .= ' <span class="ibo-input-select--autocomplete-item-image" ">' . $sInitials . '</span>';
}
}
$oOption = SelectOptionUIBlockFactory::MakeForSelectOption($oChoiceItem->GetKey(), $sOptionName, ($sCurrentValue == $oChoiceItem->GetKey()));
$oSelect->AddOption($oOption);
}
$sInputType = CmdbAbstractObject::ENUM_INPUT_TYPE_DROPDOWN_DECORATED;
$sJsonOptions = str_replace("'", "\'", str_replace('\\', '\\\\', json_encode($aOptions)));
$oPage->add_ready_script(
<<<JS
let select$sFieldName = $('#$sFieldName').selectize({
plugins:['custom_itop', 'selectize-plugin-a11y'],
});
JS
);
return $oSelect;
} else {
// Too many choices, use an autocomplete
// Check that the given value is allowed
$oSearch = $oAllowedValues->GetFilter();
$oSearch->AddCondition('id', $sCurrentValue);
$oSet = new DBObjectSet($oSearch);
$sClass = $oSet->GetClass();
if ($oSet->Count() == 0) {
$sCurrentValue = null;
}
if (is_null($sCurrentValue) || ($sCurrentValue == 0)) // Null values are displayed as ''
{
$sDisplayValue = '';
} else {
$sDisplayValue = MetaModel::GetObject($sClass, $sCurrentValue)->GetName();
}
$iMinChars = MetaModel::GetConfig()->Get('min_autocomplete_chars'); //@@@ $this->oAttDef->GetMinAutoCompleteChars();
// the input for the auto-complete
$sInputType = CmdbAbstractObject::ENUM_INPUT_TYPE_AUTOCOMPLETE;
$sHTMLValue .= "<input class=\"field_autocomplete ibo-input ibo-input-select ibo-input-select-autocomplete\" type=\"text\" id=\"label_$sFieldName\" value=\"$sDisplayValue\" placeholder='...'/>";
// another hidden input to store & pass the object's Id
$sHTMLValue .= "<input type=\"hidden\" id=\"$sFieldName\" name=\"{$sFieldName}\" value=\"" . utils::HtmlEntities($sCurrentValue) . "\" />\n";
$sMessage = Dict::S('UI:Message:EmptyList:UseSearchForm');
$oPage->add_ready_script(
<<<EOF
oACWidget_{$sFieldName} = new ExtKeyWidget('$sFieldName', '$sClass', '$sOql', '$sLabel', false, null, '{$sFieldName}', true, false);
oACWidget_{$sFieldName}.emptyHtml = "<div style=\"background: #fff; border:0; text-align:center; vertical-align:middle;\"><p>$sMessage</p></div>";
oACWidget_{$sFieldName}.AddAutocomplete($iMinChars, '');
if ($('#ac_dlg_{$sFieldName}').length == 0)
{
$('body').append('<div id="ac_dlg_{$sFieldName}"></div>');
}
EOF
);
$sHTMLValue .= "<div class=\"ibo-input-select--action-buttons\">";
$sHTMLValue .= "<a href=\"#\" class=\"ibo-input-select--action-button ibo-input-select--action-button--clear ibo-is-hidden\" id=\"mini_clear_{$sFieldName}\" onClick=\"$('#$sFieldName').val('');$('#label_$sFieldName').val(''); $('#label_$sFieldName').data('selected_value', '');\" data-tooltip-content='" . Dict::S('UI:Button:Clear') . "'><i class=\"fas fa-times\"></i></a>";
$sHTMLValue .= "<a href=\"#\" class=\"ibo-input-select--action-button ibo-input-select--action-button--search\" id=\"mini_search_{$sFieldName}\" onClick=\"oACWidget_{$sFieldName}.Search();\" data-tooltip-content='" . Dict::S('UI:Button:Search') . "'><i class=\"fas fa-search\"></i></a>";
if (MetaModel::IsHierarchicalClass($sClass) !== false) {
$sHTMLValue .= "<a href=\"#\" class=\"ibo-input-select--action-button ibo-input-select--action-button--hierarchy\" id=\"mini_tree_{$sFieldName}\" onClick=\"oACWidget_{$sFieldName}.HKDisplay();\" data-tooltip-content='" . Dict::S('UI:Button:SearchInHierarchy') . "'><i class=\"fas fa-sitemap\"></i></a>";
$oPage->add_ready_script(
<<<JS
if ($('#ac_tree_{$sFieldName}').length == 0)
{
$('body').append('<div id="ac_tree_{$sFieldName}"></div>');
}
JS
);
}
}
$sHTMLValue .= "</div>";
$sHTMLValue .= "</div>";
return new Html($sHTMLValue);
}
try
{
@@ -470,29 +327,15 @@ try
$oP->AddUiBlock($oPanel);
while ($oAuditFilter = $oAuditFilterSet->Fetch()) {
$sCurrentValue = utils::ReadParam($oAuditFilter->Get('placeholder'), '');
$oBlock = FieldUIBlockFactory::MakeStandard($oAuditFilter->Get('label'));
$oBlock->SetAttLabel($oAuditFilter->Get('label'))
->AddDataAttribute("input-id", $oAuditFilter->Get('placeholder'))
->AddDataAttribute("input-type", 'input-type');
$oValue = UIContentBlockUIBlockFactory::MakeStandard("", ["form-field-content", "ibo-input-field-wrapper"]);
$sCurrentValue = utils::ReadParam($oAuditFilter->Get('placeholder'), '');
if (utils::IsNotNullOrEmptyString($oAuditFilter->Get('oql'))) {
$oValue->AddSubBlock(MakeSelectField( $oP, $oAuditFilter->Get('label'), $oAuditFilter->Get('placeholder'), $oAuditFilter->Get('oql'), $sCurrentValue));
} else {//this is a list of values
$aListValues = explode(',',$oAuditFilter->Get('values'));
$oSelect = SelectUIBlockFactory::MakeForSelect($oAuditFilter->Get('placeholder'), $oAuditFilter->Get('placeholder'));
$oSelect->AddCSSClass('ibo-input-field-wrapper');
//foreach($aListValues as $sKey => $sValue) {
// $oSelect->AddOption(SelectOptionUIBlockFactory::MakeForSelectOption($sKey, $sValue, ($sCurrentValue == $sKey)));
foreach($aListValues as $sValue) {
$oSelect->AddOption(SelectOptionUIBlockFactory::MakeForSelectOption($sValue, $sValue, ($sCurrentValue == $sValue)));
}
$oValue->AddSubBlock($oSelect);
}
$oValue->AddSubBlock($oAuditFilter->GetFieldBlock($oP, $sCurrentValue));
$oBlock->AddSubBlock($oValue);
$oPanel->AddSubBlock($oBlock);
@@ -564,17 +407,18 @@ try
if ($bHasAudiFilter) {
$sFieldCondition = '';
//JS sEnableDisableButtonJS .= 'if ('.implode(' && ', array_keys($aAllFields)).' == 0) {';
foreach ($oAuditDomain->GetDependentFields() as $sPlaceholder) {
$aDependentFields = $oAuditDomain->GetDependentFields();
foreach ($aDependentFields as $sPlaceholder) {
if($sFieldCondition != ''){
$sFieldCondition .= ' && ';
}
$sFieldCondition .= '$("[name=' . $sPlaceholder . ']").val() != "" ';
}
IssueLog::Error('$sFieldCondition: ' . $sFieldCondition);
if ($sFieldCondition != '') {
$sEnableDisableButtonJS .= 'if(' . $sFieldCondition . '){ $("#' . $oDomainDashlet->GetId() . ' a").removeClass("ibo-dashlet-badge--disabled"); } else { $("#' . $oDomainDashlet->GetId() . ' a").addClass("ibo-dashlet-badge--disabled"); }';
$oP->add_ready_script('$("#' . $oDomainDashlet->GetId() . ' a").addClass("ibo-dashlet-badge--disabled")');
}
$oDomainBlock->SetClassDescription($oDomainBlock->GetClassDescription() . Dict::S('Class:AuditDomain/Select:DependentFields', implode(', ', $aDependentFields)));
}
}
$oP->AddUiBlock($oDashboardRow);
@@ -590,7 +434,6 @@ try
});
});
observerOrgFromId.observe(document.getElementById('$sPanelFilterId'), { attributes : true, attributeFilter : ['value'], subtree: true,childList: true });
console.warn('yo');
$('body').on('click', 'a.ibo-dashlet-badge--disabled', function(event) {
event.preventDefault();
});
@@ -603,6 +446,7 @@ JS;
case 'audit':
default:
$sDomainKey = utils::ReadParam('domain', '');
$oAuditDomain = null;
$sCategories = utils::ReadParam('categories', '', false, utils::ENUM_SANITIZATION_FILTER_STRING); // May contain commas
// Default case, full audit
$oCategoriesSet = new DBObjectSet(new DBObjectSearch('AuditCategory'));
@@ -628,6 +472,17 @@ JS;
$sSubTitle = Dict::Format('UI:Audit:Interactive:Domain:SubTitle', $sDomainName);
$sBreadCrumbLabel = Dict::Format('UI:Audit:Interactive:Domain:BreadCrumb', $sDomainName);
$sBreadCrumbTooltip = Dict::Format('UI:Audit:Interactive:Domain:BreadCrumb+', $sDomainName);
if ($bHasAudiFilter) {
if ($oAuditDomain != null) {
$aListNecessaryParameters = $oAuditDomain->GetDependentFields();
if ($aListNecessaryParameters == []) {
$bHasAudiFilter = false;
} else {
$oSearch->AddCondition('placeholder',$aListNecessaryParameters, 'IN');
$oAuditFilterSet = new DBObjectSet($oSearch, array(), array());
}
}
}
}
$oP->SetBreadCrumbEntry('ui-tool-audit', $sBreadCrumbLabel, $sBreadCrumbTooltip, '', 'fas fa-stethoscope', iTopWebPage::ENUM_BREADCRUMB_ENTRY_ICON_TYPE_CSS_CLASSES);
@@ -635,34 +490,34 @@ JS;
$oP->AddUiBlock($oBackButton);
$oP->AddUiBlock(TitleUIBlockFactory::MakeForPage($sTitle));
$aFilterParams = [];
$sAddingParams = '';
if ($bHasAudiFilter) {
$oPanel = PanelUIBlockFactory::MakeNeutral('', Dict::S('UI:Audit:Interactive:FilterList'));
$oP->AddUiBlock($oPanel);
$aFilterParams = [];
$sAddingParams = '';
if ($bHasAudiFilter) {
$oPanel = PanelUIBlockFactory::MakeNeutral('', Dict::S('UI:Audit:Interactive:FilterList'));
$oP->AddUiBlock($oPanel);
while ($oAuditFilter = $oAuditFilterSet->Fetch()) {
$sCurrentValue = utils::ReadParam($oAuditFilter->Get('placeholder'), '');
try {
$sAddingParams .= '&' . $oAuditFilter->Get('placeholder') . '=' . $sCurrentValue;
$aFilterParams[$oAuditFilter->Get('placeholder')] = $sCurrentValue;
$sName = '';
if (utils::IsNotNullOrEmptyString($oAuditFilter->Get('oql'))) {
$oSearch = new DBObjectSet(DBObjectSearch::FromOQL($oAuditFilter->Get('oql')));
$sClass = $oSearch->GetClass();
$oObject = MetaModel::GetObject($sClass, $sCurrentValue);
$sName = $oObject->GetName();
} else {//this is a list of values
$sName = $sCurrentValue;//$oAuditFilter->Get('values')[$sCurrentValue];
}
$sFilterText .= '<li>' . $oAuditFilter->Get('label') . ': ' . $sName . '</li>';
} catch (Exception $e) {
$sFilterText .= '<li> no '.$oAuditFilter->Get('label').' filter' . '</li>';
while ($oAuditFilter = $oAuditFilterSet->Fetch()) {
$sCurrentValue = utils::ReadParam($oAuditFilter->Get('placeholder'), '');
try {
$sAddingParams .= '&' . $oAuditFilter->Get('placeholder') . '=' . $sCurrentValue;
$aFilterParams[$oAuditFilter->Get('placeholder')] = $sCurrentValue;
$sName = '';
if (utils::IsNotNullOrEmptyString($oAuditFilter->Get('oql'))) {
$oSearch = new DBObjectSet(DBObjectSearch::FromOQL($oAuditFilter->Get('oql')));
$sClass = $oSearch->GetClass();
$oObject = MetaModel::GetObject($sClass, $sCurrentValue);
$sName = $oObject->GetName();
} else {//this is a list of values
$sName = $sCurrentValue;//$oAuditFilter->Get('values')[$sCurrentValue];
}
$sFilterText .= '<li>' . $oAuditFilter->Get('label') . ': ' . $sName . '</li>';
} catch (Exception $e) {
$sFilterText .= '<li> no '.$oAuditFilter->Get('label').' filter' . '</li>';
}
$oPanel->AddSubBlock(new Html($sFilterText . '</ul>'));
}
$oPanel->AddSubBlock(new Html($sFilterText . '</ul>'));
}
$oP->AddUiBlock(new Html('<br>'));
$oP->AddUiBlock(new Text($sSubTitle));