From 48d0fc6ddbd44f2fc710ef36d51d367cf6e4ac8a Mon Sep 17 00:00:00 2001 From: acognet Date: Tue, 27 Apr 2021 10:18:32 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B03907=20-=20Polishing:=20Run=20query?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictionaries/cs.dictionary.itop.ui.php | 24 +------- dictionaries/da.dictionary.itop.ui.php | 24 ++------ dictionaries/de.dictionary.itop.ui.php | 23 ++------ dictionaries/en.dictionary.itop.ui.php | 1 + dictionaries/es_cr.dictionary.itop.ui.php | 22 +------ dictionaries/fr.dictionary.itop.ui.php | 20 +------ dictionaries/hu.dictionary.itop.ui.php | 20 +------ dictionaries/it.dictionary.itop.ui.php | 22 +------ dictionaries/ja.dictionary.itop.ui.php | 22 ++----- dictionaries/nl.dictionary.itop.ui.php | 1 + dictionaries/pl.dictionary.itop.ui.php | 5 +- dictionaries/pt_br.dictionary.itop.ui.php | 22 +------ dictionaries/ru.dictionary.itop.ui.php | 6 ++ dictionaries/sk.dictionary.itop.ui.php | 22 ++----- dictionaries/tr.dictionary.itop.ui.php | 23 +------- dictionaries/zh_cn.dictionary.itop.ui.php | 25 ++------ pages/ajax.searchform.php | 33 +++++------ pages/run_query.php | 58 +++++++++---------- .../components/input/input-textarea.html.twig | 1 + 19 files changed, 94 insertions(+), 280 deletions(-) diff --git a/dictionaries/cs.dictionary.itop.ui.php b/dictionaries/cs.dictionary.itop.ui.php index 5319cb7cc..dab87f741 100755 --- a/dictionaries/cs.dictionary.itop.ui.php +++ b/dictionaries/cs.dictionary.itop.ui.php @@ -1,28 +1,9 @@ -/** - * Localized data. - * - * @author Lukáš Dvořák - * @author Daniel Rokos +/* * @copyright Copyright (C) 2010-2021 Combodo SARL * @license http://opensource.org/licenses/AGPL-3.0 */ + ////////////////////////////////////////////////////////////////////// // Classes in 'gui' ////////////////////////////////////////////////////////////////////// @@ -715,6 +696,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array( 'UI:RunQuery:Title' => 'iTop - Vyhodnocení OQL dotazu', 'UI:RunQuery:QueryExamples' => 'Příklady dotazů', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Účel', 'UI:RunQuery:HeaderPurpose+' => 'Vysvětlení účelu dotazi', 'UI:RunQuery:HeaderOQLExpression' => 'OQL dotaz', diff --git a/dictionaries/da.dictionary.itop.ui.php b/dictionaries/da.dictionary.itop.ui.php index 68906f75e..f63caa64f 100644 --- a/dictionaries/da.dictionary.itop.ui.php +++ b/dictionaries/da.dictionary.itop.ui.php @@ -1,26 +1,9 @@ -/** - * @author Erik Bøg - * +/* * @copyright Copyright (C) 2010-2021 Combodo SARL - * @licence http://opensource.org/licenses/AGPL-3.0 + * @license http://opensource.org/licenses/AGPL-3.0 */ + Dict::Add('DA DA', 'Danish', 'Dansk', array( 'Class:AuditCategory' => 'Audit-kategori', 'Class:AuditCategory+' => 'Udsnit af alle Audits', @@ -702,6 +685,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array( 'UI:RunQuery:Title' => 'iTop - OQL Query Evaluering', 'UI:RunQuery:QueryExamples' => 'Query Eksempler', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Formål', 'UI:RunQuery:HeaderPurpose+' => 'Beskrivelse af forespørgslen', 'UI:RunQuery:HeaderOQLExpression' => 'OQL Udtryk', diff --git a/dictionaries/de.dictionary.itop.ui.php b/dictionaries/de.dictionary.itop.ui.php index 77d8a1040..a99f994a9 100644 --- a/dictionaries/de.dictionary.itop.ui.php +++ b/dictionaries/de.dictionary.itop.ui.php @@ -1,25 +1,9 @@ -/** - * @author Stephan Rosenke , +/* * @copyright Copyright (C) 2010-2021 Combodo SARL - * @licence http://opensource.org/licenses/AGPL-3.0 + * @license http://opensource.org/licenses/AGPL-3.0 */ + Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:AuditCategory' => 'Audit-Kategorie', 'Class:AuditCategory+' => 'Definition einer Objektgruppe, die durch Regeln überprüft werden soll.', @@ -701,6 +685,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'UI:RunQuery:Title' => 'iTop - OQL-Abfrage-Auswertung', 'UI:RunQuery:QueryExamples' => 'Abfragebeispiele', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Verwendungszweck', 'UI:RunQuery:HeaderPurpose+' => 'Beschreibung der Abfrage', 'UI:RunQuery:HeaderOQLExpression' => 'OQL-Ausdruck', diff --git a/dictionaries/en.dictionary.itop.ui.php b/dictionaries/en.dictionary.itop.ui.php index 407e106cc..5b309a9e8 100644 --- a/dictionaries/en.dictionary.itop.ui.php +++ b/dictionaries/en.dictionary.itop.ui.php @@ -708,6 +708,7 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'UI:RunQuery:Title' => ITOP_APPLICATION_SHORT.' - OQL Query Evaluation', 'UI:RunQuery:QueryExamples' => 'Query Examples', + 'UI:RunQuery:QueryResults' => 'Query Results', 'UI:RunQuery:HeaderPurpose' => 'Purpose', 'UI:RunQuery:HeaderPurpose+' => 'Explanation about the query', 'UI:RunQuery:HeaderOQLExpression' => 'OQL Expression', diff --git a/dictionaries/es_cr.dictionary.itop.ui.php b/dictionaries/es_cr.dictionary.itop.ui.php index 2b6db0b6f..24bca37cb 100644 --- a/dictionaries/es_cr.dictionary.itop.ui.php +++ b/dictionaries/es_cr.dictionary.itop.ui.php @@ -1,26 +1,9 @@ -/** - * Localized data - * +/* * @copyright Copyright (C) 2010-2021 Combodo SARL * @license http://opensource.org/licenses/AGPL-3.0 */ + ////////////////////////////////////////////////////////////////////// // Classes in 'gui' ////////////////////////////////////////////////////////////////////// @@ -713,6 +696,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array( 'UI:RunQuery:Title' => 'iTop - Evaluación de consultas OQL', 'UI:RunQuery:QueryExamples' => 'Explorador de Consultas', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Propósito', 'UI:RunQuery:HeaderPurpose+' => 'Explicación acerca de la consulta', 'UI:RunQuery:HeaderOQLExpression' => 'Expresión OQL', diff --git a/dictionaries/fr.dictionary.itop.ui.php b/dictionaries/fr.dictionary.itop.ui.php index 013ba683d..d0089b7e4 100644 --- a/dictionaries/fr.dictionary.itop.ui.php +++ b/dictionaries/fr.dictionary.itop.ui.php @@ -1,24 +1,9 @@ -/** +/* * @copyright Copyright (C) 2010-2021 Combodo SARL * @license http://opensource.org/licenses/AGPL-3.0 */ + Dict::Add('FR FR', 'French', 'Français', array( 'Class:AuditCategory' => 'Catégorie d\'audit', 'Class:AuditCategory+' => 'Une section de l\'audit', @@ -707,6 +692,7 @@ Nous espérons que vous aimerez cette version autant que nous avons eu du plaisi 'UI:RunQuery:Title' => 'iTop - Evaluation de requêtes OQL', 'UI:RunQuery:QueryExamples' => 'Exemples de requêtes', + 'UI:RunQuery:QueryResults' => 'Résultats de la requête', 'UI:RunQuery:HeaderPurpose' => 'Objectif', 'UI:RunQuery:HeaderPurpose+' => 'But de la requête', 'UI:RunQuery:HeaderOQLExpression' => 'Requête OQL', diff --git a/dictionaries/hu.dictionary.itop.ui.php b/dictionaries/hu.dictionary.itop.ui.php index 480194568..0ebf045fb 100755 --- a/dictionaries/hu.dictionary.itop.ui.php +++ b/dictionaries/hu.dictionary.itop.ui.php @@ -1,24 +1,9 @@ -/** +/* * @copyright Copyright (C) 2010-2021 Combodo SARL * @license http://opensource.org/licenses/AGPL-3.0 */ + Dict::Add('HU HU', 'Hungarian', 'Magyar', array( 'Class:AuditCategory' => 'Audit kategória', 'Class:AuditCategory+' => '', @@ -700,6 +685,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array( 'UI:RunQuery:Title' => 'iTop - OQL lekérdezés értékelés', 'UI:RunQuery:QueryExamples' => 'Lekérdezés példák', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Cél', 'UI:RunQuery:HeaderPurpose+' => '', 'UI:RunQuery:HeaderOQLExpression' => 'OQL kifejezés', diff --git a/dictionaries/it.dictionary.itop.ui.php b/dictionaries/it.dictionary.itop.ui.php index 1f571dfa2..d65a0537f 100644 --- a/dictionaries/it.dictionary.itop.ui.php +++ b/dictionaries/it.dictionary.itop.ui.php @@ -1,26 +1,9 @@ -/** - * Localized data - * +/* * @copyright Copyright (C) 2010-2021 Combodo SARL * @license http://opensource.org/licenses/AGPL-3.0 */ + ////////////////////////////////////////////////////////////////////// // Classes in 'gui' ////////////////////////////////////////////////////////////////////// @@ -713,6 +696,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array( 'UI:RunQuery:Title' => 'iTop - Valutazione Query OQL', 'UI:RunQuery:QueryExamples' => 'Esempi di Query', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Scopo', 'UI:RunQuery:HeaderPurpose+' => '', 'UI:RunQuery:HeaderOQLExpression' => 'Espressioni OQL', diff --git a/dictionaries/ja.dictionary.itop.ui.php b/dictionaries/ja.dictionary.itop.ui.php index 5d47dc468..673cd0401 100644 --- a/dictionaries/ja.dictionary.itop.ui.php +++ b/dictionaries/ja.dictionary.itop.ui.php @@ -1,24 +1,9 @@ -/** +/* * @copyright Copyright (C) 2010-2021 Combodo SARL - * @licence http://opensource.org/licenses/AGPL-3.0 + * @license http://opensource.org/licenses/AGPL-3.0 */ + Dict::Add('JA JP', 'Japanese', '日本語', array( 'Class:AuditCategory' => '監査カテゴリ', 'Class:AuditCategory+' => '監査全体の内部セクション', @@ -700,6 +685,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array( 'UI:RunQuery:Title' => 'iTop - OQLクエリ評価', 'UI:RunQuery:QueryExamples' => 'クエリの例', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => '目的', 'UI:RunQuery:HeaderPurpose+' => 'クエリについての説明', 'UI:RunQuery:HeaderOQLExpression' => 'OQL式', diff --git a/dictionaries/nl.dictionary.itop.ui.php b/dictionaries/nl.dictionary.itop.ui.php index 331686b15..b9a6181b5 100644 --- a/dictionaries/nl.dictionary.itop.ui.php +++ b/dictionaries/nl.dictionary.itop.ui.php @@ -696,6 +696,7 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array( 'UI:RunQuery:Title' => 'ITOP_APPLICATION_SHORT - Evaluatie van OQL-query', 'UI:RunQuery:QueryExamples' => 'Voorbeelden van query\'s', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Doel', 'UI:RunQuery:HeaderPurpose+' => 'Uitleg over de query', 'UI:RunQuery:HeaderOQLExpression' => 'OQL-expressie', diff --git a/dictionaries/pl.dictionary.itop.ui.php b/dictionaries/pl.dictionary.itop.ui.php index 226c3babf..10f8cec24 100644 --- a/dictionaries/pl.dictionary.itop.ui.php +++ b/dictionaries/pl.dictionary.itop.ui.php @@ -1,7 +1,7 @@ ITOP_APPLICATION_SHORT.' - Wykonywanie zapytań OQL', 'UI:RunQuery:QueryExamples' => 'Przykłady zapytań', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Cel, powód', 'UI:RunQuery:HeaderPurpose+' => 'Wyjaśnienie dotyczące zapytania', 'UI:RunQuery:HeaderOQLExpression' => 'Wyrażenie OQL', diff --git a/dictionaries/pt_br.dictionary.itop.ui.php b/dictionaries/pt_br.dictionary.itop.ui.php index 9ad830789..8651b993c 100644 --- a/dictionaries/pt_br.dictionary.itop.ui.php +++ b/dictionaries/pt_br.dictionary.itop.ui.php @@ -1,26 +1,9 @@ -/** - * Localized data - * +/* * @copyright Copyright (C) 2010-2021 Combodo SARL * @license http://opensource.org/licenses/AGPL-3.0 */ + ////////////////////////////////////////////////////////////////////// // Classes in 'gui' ////////////////////////////////////////////////////////////////////// @@ -713,6 +696,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array( 'UI:RunQuery:Title' => 'Avaliar consultas OQL', 'UI:RunQuery:QueryExamples' => 'Exemplos de consultas', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Propósito', 'UI:RunQuery:HeaderPurpose+' => 'Explicação sobre a consulta', 'UI:RunQuery:HeaderOQLExpression' => 'A consulta na sintaxe OQL', diff --git a/dictionaries/ru.dictionary.itop.ui.php b/dictionaries/ru.dictionary.itop.ui.php index 0570469eb..5b7649ba0 100644 --- a/dictionaries/ru.dictionary.itop.ui.php +++ b/dictionaries/ru.dictionary.itop.ui.php @@ -1,4 +1,9 @@ 'iTop - Оценка запросов OQL', 'UI:RunQuery:QueryExamples' => 'Примеры запросов', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Цель', 'UI:RunQuery:HeaderPurpose+' => 'Объяснение запросов', 'UI:RunQuery:HeaderOQLExpression' => 'Выражение OQL', diff --git a/dictionaries/sk.dictionary.itop.ui.php b/dictionaries/sk.dictionary.itop.ui.php index 7884055e6..af96c1210 100644 --- a/dictionaries/sk.dictionary.itop.ui.php +++ b/dictionaries/sk.dictionary.itop.ui.php @@ -1,22 +1,7 @@ 'Kategória auditu', @@ -700,6 +685,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array( 'UI:RunQuery:Title' => 'iTop - Určenie OQL Dopytu', 'UI:RunQuery:QueryExamples' => 'Príklad dopytu', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Účel', 'UI:RunQuery:HeaderPurpose+' => '', 'UI:RunQuery:HeaderOQLExpression' => 'OQL Výraz', diff --git a/dictionaries/tr.dictionary.itop.ui.php b/dictionaries/tr.dictionary.itop.ui.php index 2a0524dbc..e06d5aff9 100644 --- a/dictionaries/tr.dictionary.itop.ui.php +++ b/dictionaries/tr.dictionary.itop.ui.php @@ -1,27 +1,9 @@ -/** - * Localized data - * - * @author Izzet Sirin +/* * @copyright Copyright (C) 2010-2021 Combodo SARL * @license http://opensource.org/licenses/AGPL-3.0 */ + ////////////////////////////////////////////////////////////////////// // Classes in 'gui' ////////////////////////////////////////////////////////////////////// @@ -714,6 +696,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array( 'UI:RunQuery:Title' => 'iTop - OQL Sorgu değerlendirme', 'UI:RunQuery:QueryExamples' => 'Sorgu örnekleri', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => 'Amaç', 'UI:RunQuery:HeaderPurpose+' => 'Sorgu açıklaması', 'UI:RunQuery:HeaderOQLExpression' => 'OQL ifadesi', diff --git a/dictionaries/zh_cn.dictionary.itop.ui.php b/dictionaries/zh_cn.dictionary.itop.ui.php index bfbe979b6..7e4b7e06a 100644 --- a/dictionaries/zh_cn.dictionary.itop.ui.php +++ b/dictionaries/zh_cn.dictionary.itop.ui.php @@ -1,25 +1,7 @@ - * @copyright Copyright (C) 2010-2021 Combodo SARL - * @license http://opensource.org/licenses/AGPL-3.0 - * - * 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 +/* + * @copyright Copyright (C) 2010-2021 Combodo SARL + * @license http://opensource.org/licenses/AGPL-3.0 */ ////////////////////////////////////////////////////////////////////// // Classes in 'gui' @@ -713,6 +695,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array( 'UI:RunQuery:Title' => 'iTop - OQL 查询评估', 'UI:RunQuery:QueryExamples' => '示例查询', + 'UI:RunQuery:QueryResults' => 'Query Results~~', 'UI:RunQuery:HeaderPurpose' => '目的', 'UI:RunQuery:HeaderPurpose+' => '该查询的解释', 'UI:RunQuery:HeaderOQLExpression' => 'OQL 表达式', diff --git a/pages/ajax.searchform.php b/pages/ajax.searchform.php index 84339ec66..f217be521 100644 --- a/pages/ajax.searchform.php +++ b/pages/ajax.searchform.php @@ -1,24 +1,13 @@ Display($oPage, $sListId, $aExtraParams); + $oPage->AddUiBlock($oDisplayBlock->GetDisplay($oPage, $sListId, $aExtraParams)); } else { @@ -109,9 +98,15 @@ try if (isset($aListParams['debug']) || UserRights::IsAdministrator()) { - $oPage->StartCollapsibleSection(Dict::S('UI:RunQuery:MoreInfo'), false, 'SearchQuery'); + $oCollapsible = CollapsibleSectionUIBlockFactory::MakeStandard(Dict::S('UI:RunQuery:MoreInfo')); + $oPage->AddSubBlock($oCollapsible); + + $oHtml = new Html(Dict::S('UI:RunQuery:DevelopedQuery').htmlentities($oFilter->ToOQL(), ENT_QUOTES, 'UTF-8')); + $oCollapsible->AddSubBlock($oHtml); + + /*$oPage->StartCollapsibleSection(Dict::S('UI:RunQuery:MoreInfo'), false, 'SearchQuery'); $oPage->p(Dict::S('UI:RunQuery:DevelopedQuery').htmlentities($oFilter->ToOQL(), ENT_QUOTES, 'UTF-8')); - $oPage->EndCollapsibleSection(); + $oPage->EndCollapsibleSection();*/ } $oPage->output(); diff --git a/pages/run_query.php b/pages/run_query.php index 1a526f09a..4690a3ab4 100644 --- a/pages/run_query.php +++ b/pages/run_query.php @@ -1,33 +1,25 @@ GetForForm(); - foreach($aExamples as $sTopic => $aQueries) - { - foreach($aQueries as $sDescription => $sOql) - { + foreach ($aExamples as $sTopic => $aQueries) { + foreach ($aQueries as $sDescription => $sOql) { $sHighlight = ''; $sDisable = ''; - if ($sOql == $sExpression) - { + if ($sOql == $sExpression) { // this one is currently being tested, highlight it $sHighlight = "background-color:yellow;"; $sDisable = 'disabled'; // and remember we are testing a query of the list $bUsingExample = true; } + $oFormButton = FormUIBlockFactory::MakeStandard(); + $oFormButton->AddSubBlock(InputUIBlockFactory::MakeForHidden("expression", $sOql)); + $oButton = ButtonUIBlockFactory::MakeForSecondaryAction(Dict::S('UI:Button:Test'), '', '', true); + $oButton->SetIsDisabled($sDisable); + $oFormButton->AddSubBlock($oButton); + $oFormButton->AddSubBlock(new Html($sContext)); //$aDisplayData[$sTopic][] = array( $aDisplayData[Dict::S('UI:RunQuery:QueryExamples')][] = array( 'desc' => "
".utils::EscapeHtml($sDescription)."
", 'oql' => "
".utils::EscapeHtml($sOql)."
", - //TODO 3.0.0 : buttons are not styled properly yet... - // This whole "query examples" may be migrated to TWIG using iTop Twig tags ? - 'go' => "
$sContext
\n", + 'go' => BlockRenderer::RenderBlockTemplates($oFormButton), ); } } @@ -104,7 +97,7 @@ function ShowExamples($oP, $sExpression) foreach ($aDisplayData as $sTopic => $aQueriesDisplayData) { $bShowOpened = $bUsingExample; - $oTopic = $oP->GetTableBlock($aDisplayConfig, $aQueriesDisplayData); + $oTopic = DataTableUIBlockFactory::MakeForForm('oqlExample', $aDisplayConfig, $aQueriesDisplayData); $oTopicSection = new CollapsibleSection($sTopic, [$oTopic]); $oTopicSection->SetOpenedByDefault($bShowOpened); $oP->AddUiBlock($oTopicSection); @@ -179,10 +172,9 @@ try $oQueryForm->AddSubBlock($oHiddenParams); //--- Query textarea - $oQueryTitle = new Html('

'.Dict::S('UI:RunQuery:ExpressionToEvaluate').'

'); - $oQueryForm->AddSubBlock($oQueryTitle); + $oQueryForm->AddSubBlock(TitleUIBlockFactory::MakeNeutral(Dict::S('UI:RunQuery:ExpressionToEvaluate'), 2)); $oQueryTextArea = new TextArea('expression', utils::EscapeHtml($sExpression), 'expression', 120, 8); - $oQueryTextArea->SetName('expression'); + $oQueryTextArea->AddCSSClass('ibo-queryoql'); $oQueryForm->AddSubBlock($oQueryTextArea); $oP->add_linked_script(utils::GetAbsoluteUrlAppRoot()."/js/jquery.hotkeys.js"); @@ -215,12 +207,16 @@ EOF null, true )->SetTooltip(Dict::S('UI:Button:Evaluate:Title')); - $oQueryForm->AddSubBlock($oQuerySubmit); + $oToolbarButtons = ToolbarUIBlockFactory::MakeStandard(null); + $oToolbarButtons->AddCSSClass('ibo-toolbar--button'); + $oToolbarButtons->AddCSSClass('mb-5'); + $oQueryForm->AddSubBlock($oToolbarButtons); + $oToolbarButtons->AddSubBlock($oQuerySubmit); if ($oFilter) { //--- Query filter - $oP->add("

Query results

\n"); + $oP->AddSubBlock(TitleUIBlockFactory::MakeNeutral(Dict::S('UI:RunQuery:QueryResults'), 2)); $oResultBlock = new DisplayBlock($oFilter, 'list', false); $oResultBlock->Display($oP, 'runquery'); diff --git a/templates/base/components/input/input-textarea.html.twig b/templates/base/components/input/input-textarea.html.twig index aa5df6e0c..99a7c46fb 100644 --- a/templates/base/components/input/input-textarea.html.twig +++ b/templates/base/components/input/input-textarea.html.twig @@ -9,6 +9,7 @@ data-{{ sName }}="{{ sValue }}" {% endfor %} {% endif %} + {% if oUIBlock.GetAdditionalCSSClassesAsString() %} class="{{ oUIBlock.GetAdditionalCSSClassesAsString() }}"{% endif %} {% if oUIBlock.GetPlaceHolder() %} placeholder="{{ oUIBlock.GetPlaceHolder() }}" {% endif %} >{{ oUIBlock.GetValue()|raw }} {% endblock %} \ No newline at end of file