Skip to content

Commit 76f2341

Browse files
Merge pull request #18854 from kamil-tekiela/More-Designer-fixes
More Designer refactorings
2 parents b7efa52 + f6cc116 commit 76f2341

7 files changed

Lines changed: 106 additions & 251 deletions

File tree

‎phpstan-baseline.neon‎

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1610,11 +1610,6 @@ parameters:
16101610
count: 2
16111611
path: src/Controllers/Database/DesignerController.php
16121612

1613-
-
1614-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\:\\:getDatabaseTables\\(\\) expects string, mixed given\\.$#"
1615-
count: 1
1616-
path: src/Controllers/Database/DesignerController.php
1617-
16181613
-
16191614
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\:\\:getHtmlForEditOrDeletePages\\(\\) expects string, mixed given\\.$#"
16201615
count: 2
@@ -1650,6 +1645,11 @@ parameters:
16501645
count: 1
16511646
path: src/Controllers/Database/DesignerController.php
16521647

1648+
-
1649+
message: "#^Parameter \\#1 \\$db of static method PhpMyAdmin\\\\Url\\:\\:getHiddenInputs\\(\\) expects array\\|string, mixed given\\.$#"
1650+
count: 1
1651+
path: src/Controllers/Database/DesignerController.php
1652+
16531653
-
16541654
message: "#^Parameter \\#1 \\$index of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:saveSetting\\(\\) expects string, mixed given\\.$#"
16551655
count: 1
@@ -1710,11 +1710,6 @@ parameters:
17101710
count: 1
17111711
path: src/Controllers/Database/DesignerController.php
17121712

1713-
-
1714-
message: "#^Parameter \\#2 \\$getDb of method PhpMyAdmin\\\\Database\\\\Designer\\:\\:getHtmlForMain\\(\\) expects string, mixed given\\.$#"
1715-
count: 1
1716-
path: src/Controllers/Database/DesignerController.php
1717-
17181713
-
17191714
message: "#^Parameter \\#2 \\$table of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:getTablesInfo\\(\\) expects string\\|null, mixed given\\.$#"
17201715
count: 2
@@ -6965,11 +6960,6 @@ parameters:
69656960
count: 1
69666961
path: src/Database/Designer/Common.php
69676962

6968-
-
6969-
message: "#^Only booleans are allowed in a negated boolean, bool\\|string given\\.$#"
6970-
count: 1
6971-
path: src/Database/Designer/Common.php
6972-
69736963
-
69746964
message: "#^Only booleans are allowed in an if condition, PhpMyAdmin\\\\Dbal\\\\ResultInterface\\|false given\\.$#"
69756965
count: 2

‎resources/templates/database/designer/database_tables.twig‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,14 @@
7070
designerTable.getTableName()|escape('url'),
7171
tab_column[t_n][j].name|url_encode
7272
] %}
73-
{% if not designerTable.supportsForeignkeys() %}
74-
{% set click_field_param = click_field_param|merge([tables_pk_or_unique_keys[tmp_column] is defined ? 1 : 0]) %}
75-
{% else %}
76-
{# if foreign keys are supported, it's not necessary that the
77-
index is a primary key #}
78-
{% set click_field_param = click_field_param|merge([tables_all_keys[tmp_column] is defined ? 1 : 0]) %}
73+
{% if tables_all_keys[tmp_column] is defined %}
74+
{% if not designerTable.supportsForeignkeys() %}
75+
{% set click_field_param = click_field_param|merge([tables_all_keys[tmp_column] ? 1 : 0]) %}
76+
{% else %}
77+
{# if foreign keys are supported, it's not necessary that the
78+
index is a primary key #}
79+
{% set click_field_param = click_field_param|merge([1]) %}
80+
{% endif %}
7981
{% endif %}
8082
{% set click_field_param = click_field_param|merge([db]) %}
8183
<tr id="id_tr_{{ designerTable.getTableName()|escape('url') }}.{{ tab_column[t_n][j].name }}" class="tab_field

‎resources/templates/database/designer/main.twig‎

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,13 +233,11 @@ window.designerConfig = {{ designer_config|raw }};
233233
{% include 'database/designer/database_tables.twig' with {
234234
'db': db,
235235
'text_dir': text_dir,
236-
'get_db': get_db,
237236
'has_query': has_query,
238237
'tab_pos': tab_pos,
239238
'display_page': display_page,
240239
'tab_column': tab_column,
241240
'tables_all_keys': tables_all_keys,
242-
'tables_pk_or_unique_keys': tables_pk_or_unique_keys,
243241
'columns_type': columns_type,
244242
'tables': designerTables,
245243
} only %}
@@ -1122,5 +1120,25 @@ window.designerConfig = {{ designer_config|raw }};
11221120
</div>
11231121
</div>
11241122
{% if visual_builder %}
1125-
{{ include('modals/build_query.twig', {'get_db': get_db}) }}
1123+
<div class="modal fade" id="buildQueryModal" tabindex="-1" aria-labelledby="buildQueryModalLabel" aria-hidden="true">
1124+
<div class="modal-dialog">
1125+
<div class="modal-content">
1126+
<div class="modal-header">
1127+
<h5 class="modal-title" id="buildQueryModalLabel">{% trans 'Loading' %}</h5>
1128+
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{% trans 'Close' %}"></button>
1129+
</div>
1130+
<div id="box" class="modal-body">
1131+
<form method="post" action="{{ url('/database/qbe') }}" id="vqb_form">
1132+
<textarea cols="80" name="sql_query" id="textSqlquery" rows="15"></textarea>
1133+
<input type="hidden" name="submit_sql" value="true">
1134+
{{ hidden_input_fields|raw }}
1135+
</form>
1136+
</div>
1137+
<div class="modal-footer">
1138+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{% trans 'Close' %}</button>
1139+
<button type="button" class="btn btn-secondary" id="buildQuerySubmitButton">{% trans 'Submit' %}</button>
1140+
</div>
1141+
</div>
1142+
</div>
1143+
</div>
11261144
{% endif %}

‎resources/templates/modals/build_query.twig‎

Lines changed: 0 additions & 21 deletions
This file was deleted.

‎src/Controllers/Database/DesignerController.php‎

Lines changed: 43 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use function __;
2222
use function htmlspecialchars;
2323
use function in_array;
24+
use function json_encode;
2425
use function sprintf;
2526

2627
class DesignerController extends AbstractController
@@ -39,6 +40,7 @@ public function __invoke(ServerRequest $request): void
3940
{
4041
$GLOBALS['message'] ??= null;
4142
$GLOBALS['errorUrl'] ??= null;
43+
$GLOBALS['text_dir'] ??= null;
4244

4345
$db = $request->getParsedBodyParam('db');
4446
$table = $request->getParsedBodyParam('table');
@@ -62,17 +64,19 @@ public function __invoke(ServerRequest $request): void
6264
$scriptDisplayField = $this->designerCommon->getTablesInfo($db, $table);
6365
$tableColumn = $this->designerCommon->getColumnsInfo($scriptDisplayField);
6466
$tablesAllKeys = $this->designerCommon->getAllKeys($scriptDisplayField);
65-
$tablesPkOrUniqueKeys = $this->designerCommon->getPkOrUniqueKeys($scriptDisplayField);
66-
67-
$html = $this->databaseDesigner->getDatabaseTables(
68-
$db,
69-
$scriptDisplayField,
70-
[],
71-
-1,
72-
$tableColumn,
73-
$tablesAllKeys,
74-
$tablesPkOrUniqueKeys,
75-
);
67+
$columnsType = $this->databaseDesigner->getColumnTypes($tableColumn, $tablesAllKeys);
68+
69+
$html = $this->template->render('database/designer/database_tables', [
70+
'db' => Current::$database,
71+
'text_dir' => $GLOBALS['text_dir'],
72+
'has_query' => isset($_REQUEST['query']),
73+
'tab_pos' => [],
74+
'display_page' => -1,
75+
'tab_column' => $tableColumn,
76+
'tables_all_keys' => $tablesAllKeys,
77+
'tables' => $scriptDisplayField,
78+
'columns_type' => $columnsType,
79+
]);
7680
}
7781

7882
if ($html !== '') {
@@ -210,10 +214,8 @@ public function __invoke(ServerRequest $request): void
210214

211215
$tableColumn = $this->designerCommon->getColumnsInfo($scriptDisplayField);
212216
$scriptTables = $this->designerCommon->getScriptTabs($scriptDisplayField);
213-
$tablesPkOrUniqueKeys = $this->designerCommon->getPkOrUniqueKeys($scriptDisplayField);
214217
$tablesAllKeys = $this->designerCommon->getAllKeys($scriptDisplayField);
215218
$classesSideMenu = $this->databaseDesigner->returnClassNamesFromMenuButtons();
216-
217219
$scriptContr = $this->designerCommon->getScriptContr($scriptDisplayField);
218220

219221
$this->response->setMinimalFooter();
@@ -222,26 +224,36 @@ public function __invoke(ServerRequest $request): void
222224

223225
$this->addScriptFiles(['designer/init.js']);
224226

227+
$columnsType = $this->databaseDesigner->getColumnTypes($tableColumn, $tablesAllKeys);
228+
229+
$designerConfig = $this->databaseDesigner->getDesignerConfig(
230+
Current::$database,
231+
$scriptDisplayField,
232+
$scriptTables,
233+
$scriptContr,
234+
$displayPage,
235+
);
236+
237+
$mainHtml = $this->template->render('database/designer/main', [
238+
'db' => Current::$database,
239+
'text_dir' => $GLOBALS['text_dir'],
240+
'hidden_input_fields' => Url::getHiddenInputs($request->getQueryParam('db')),
241+
'designer_config' => json_encode($designerConfig),
242+
'display_page' => $displayPage,
243+
'has_query' => $visualBuilderMode,
244+
'visual_builder' => $visualBuilderMode,
245+
'selected_page' => $selectedPage,
246+
'params_array' => $classesSideMenu,
247+
'tab_pos' => $tablePositions,
248+
'tab_column' => $tableColumn,
249+
'tables_all_keys' => $tablesAllKeys,
250+
'designerTables' => $scriptDisplayField,
251+
'columns_type' => $columnsType,
252+
]);
253+
225254
// Embed some data into HTML, later it will be read
226255
// by designer/init.js and converted to JS variables.
227-
$this->response->addHTML(
228-
$this->databaseDesigner->getHtmlForMain(
229-
Current::$database,
230-
$request->getQueryParam('db'),
231-
$scriptDisplayField,
232-
$scriptTables,
233-
$scriptContr,
234-
$scriptDisplayField,
235-
$displayPage,
236-
$visualBuilderMode,
237-
$selectedPage,
238-
$classesSideMenu,
239-
$tablePositions,
240-
$tableColumn,
241-
$tablesAllKeys,
242-
$tablesPkOrUniqueKeys,
243-
),
244-
);
256+
$this->response->addHTML($mainHtml);
245257

246258
$this->response->addHTML('<div id="PMA_disable_floating_menubar"></div>');
247259
}

0 commit comments

Comments
 (0)