Skip to content

Commit 210521b

Browse files
Merge pull request #18456 from MauricioFauth/triggers
Refactor the Triggers page
2 parents d006f2a + ff7fe4b commit 210521b

34 files changed

Lines changed: 602 additions & 550 deletions

.github/workflows/test-selenium.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ jobs:
6666
- "Database/Operations"
6767
- "Database/Procedures"
6868
- "Database/Structure"
69-
- "Database/Triggers"
7069
- "Export"
7170
- "Import"
7271
- "Login"
@@ -79,6 +78,7 @@ jobs:
7978
- "Table/Operations"
8079
- "Table/Structure"
8180
- "Tracking"
81+
- "Triggers"
8282
- "Xss"
8383
steps:
8484
- name: Checkout code
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import $ from 'jquery';
2-
import { AJAX } from '../modules/ajax.ts';
3-
import { Functions } from '../modules/functions.ts';
4-
import { Navigation } from '../modules/navigation.ts';
5-
import { ajaxRemoveMessage, ajaxShowMessage } from '../modules/ajax-message.ts';
6-
import getJsConfirmCommonParam from '../modules/functions/getJsConfirmCommonParam.ts';
2+
import { AJAX } from './modules/ajax.ts';
3+
import { Functions } from './modules/functions.ts';
4+
import { Navigation } from './modules/navigation.ts';
5+
import { ajaxRemoveMessage, ajaxShowMessage } from './modules/ajax-message.ts';
6+
import getJsConfirmCommonParam from './modules/functions/getJsConfirmCommonParam.ts';
77

8-
AJAX.registerTeardown('database/triggers.js', function () {
8+
AJAX.registerTeardown('triggers.js', function () {
99
$(document).off('click', 'a.ajax.add_anchor, a.ajax.edit_anchor');
1010
$(document).off('click', 'a.ajax.export_anchor');
1111
$(document).off('click', '#bulkActionExportButton');
@@ -559,7 +559,7 @@ const DatabaseTriggers = {
559559
}
560560
};
561561

562-
AJAX.registerOnload('database/triggers.js', function () {
562+
AJAX.registerOnload('triggers.js', function () {
563563
/**
564564
* Attach Ajax event handlers for the Add/Edit functionality.
565565
*/

libraries/classes/Controllers/Table/TriggersController.php

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

libraries/classes/Controllers/Database/TriggersController.php renamed to libraries/classes/Controllers/Triggers/IndexController.php

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
declare(strict_types=1);
44

5-
namespace PhpMyAdmin\Controllers\Database;
5+
namespace PhpMyAdmin\Controllers\Triggers;
66

77
use PhpMyAdmin\Controllers\AbstractController;
8-
use PhpMyAdmin\Database\Triggers;
98
use PhpMyAdmin\DatabaseInterface;
109
use PhpMyAdmin\DbTableExists;
1110
use PhpMyAdmin\Http\ServerRequest;
1211
use PhpMyAdmin\ResponseRenderer;
1312
use PhpMyAdmin\Template;
13+
use PhpMyAdmin\Triggers\Triggers;
1414
use PhpMyAdmin\Url;
1515
use PhpMyAdmin\Util;
1616

@@ -20,7 +20,7 @@
2020
/**
2121
* Triggers management.
2222
*/
23-
class TriggersController extends AbstractController
23+
final class IndexController extends AbstractController
2424
{
2525
public function __construct(
2626
ResponseRenderer $response,
@@ -37,7 +37,7 @@ public function __invoke(ServerRequest $request): void
3737
$GLOBALS['urlParams'] ??= null;
3838
$GLOBALS['errorUrl'] ??= null;
3939

40-
$this->addScriptFiles(['database/triggers.js']);
40+
$this->addScriptFiles(['triggers.js']);
4141

4242
if (! $this->response->isAjax()) {
4343
/**
@@ -73,6 +73,19 @@ public function __invoke(ServerRequest $request): void
7373
*/
7474
$GLOBALS['errors'] = [];
7575

76-
$this->triggers->main();
76+
$this->triggers->handleEditor();
77+
$this->triggers->export();
78+
79+
$triggers = Triggers::getDetails($this->dbi, $GLOBALS['db'], $GLOBALS['table']);
80+
$hasTriggerPrivilege = Util::currentUserHasPrivilege('TRIGGER', $GLOBALS['db'], $GLOBALS['table']);
81+
$isAjax = $this->response->isAjax() && empty($_REQUEST['ajax_page_request']);
82+
83+
$this->render('triggers/list', [
84+
'db' => $GLOBALS['db'],
85+
'table' => $GLOBALS['table'],
86+
'triggers' => $triggers,
87+
'has_privilege' => $hasTriggerPrivilege,
88+
'is_ajax' => $isAjax,
89+
]);
7790
}
7891
}

libraries/classes/Menu.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -303,10 +303,10 @@ private function getTableTabs(): array
303303
}
304304

305305
if (! $isSystemSchema && Util::currentUserHasPrivilege('TRIGGER', $this->db, $this->table) && ! $tableIsView) {
306-
$tabs['triggers']['route'] = '/table/triggers';
306+
$tabs['triggers']['route'] = '/triggers';
307307
$tabs['triggers']['text'] = __('Triggers');
308308
$tabs['triggers']['icon'] = 'b_triggers';
309-
$tabs['triggers']['active'] = $route === '/table/triggers';
309+
$tabs['triggers']['active'] = $route === '/triggers';
310310
}
311311

312312
return $tabs;
@@ -396,10 +396,10 @@ private function getDbTabs(): array
396396
}
397397

398398
if (Util::currentUserHasPrivilege('TRIGGER', $this->db)) {
399-
$tabs['triggers']['route'] = '/database/triggers';
399+
$tabs['triggers']['route'] = '/triggers';
400400
$tabs['triggers']['text'] = __('Triggers');
401401
$tabs['triggers']['icon'] = 'b_triggers';
402-
$tabs['triggers']['active'] = $route === '/database/triggers';
402+
$tabs['triggers']['active'] = $route === '/triggers';
403403
}
404404
}
405405

libraries/classes/Navigation/Nodes/NodeTrigger.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ public function __construct(string $name, int $type = Node::OBJECT, bool $isGrou
2929
$this->icon = ['image' => 'b_triggers', 'title' => __('Trigger')];
3030
$this->links = [
3131
'text' => [
32-
'route' => '/database/triggers',
32+
'route' => '/triggers',
3333
'params' => ['edit_item' => 1, 'db' => null, 'item_name' => null],
3434
],
3535
'icon' => [
36-
'route' => '/database/triggers',
36+
'route' => '/triggers',
3737
'params' => ['export_item' => 1, 'db' => null, 'item_name' => null],
3838
],
3939
];

libraries/classes/Navigation/Nodes/NodeTriggerContainer.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,17 @@ public function __construct()
2626

2727
$this->icon = ['image' => 'b_triggers', 'title' => __('Triggers')];
2828
$this->links = [
29-
'text' => ['route' => '/database/triggers', 'params' => ['db' => null, 'table' => null]],
30-
'icon' => ['route' => '/database/triggers', 'params' => ['db' => null, 'table' => null]],
29+
'text' => ['route' => '/triggers', 'params' => ['db' => null, 'table' => null]],
30+
'icon' => ['route' => '/triggers', 'params' => ['db' => null, 'table' => null]],
3131
];
3232
$this->realName = 'triggers';
3333

3434
$newLabel = _pgettext('Create new trigger', 'New');
3535
$new = NodeFactory::getInstanceForNewNode($newLabel, 'new_trigger italics');
3636
$new->icon = ['image' => 'b_trigger_add', 'title' => $newLabel];
3737
$new->links = [
38-
'text' => ['route' => '/database/triggers', 'params' => ['add_item' => 1, 'db' => null]],
39-
'icon' => ['route' => '/database/triggers', 'params' => ['add_item' => 1, 'db' => null]],
38+
'text' => ['route' => '/triggers', 'params' => ['add_item' => 1, 'db' => null]],
39+
'icon' => ['route' => '/triggers', 'params' => ['add_item' => 1, 'db' => null]],
4040
];
4141
$this->addChild($new);
4242
}

libraries/classes/Operations.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
use PhpMyAdmin\ConfigStorage\Relation;
88
use PhpMyAdmin\Database\Events;
99
use PhpMyAdmin\Database\Routines;
10-
use PhpMyAdmin\Database\Triggers;
1110
use PhpMyAdmin\Dbal\DatabaseName;
1211
use PhpMyAdmin\Engines\Innodb;
1312
use PhpMyAdmin\Partitioning\Partition;
1413
use PhpMyAdmin\Plugins\Export\ExportSql;
14+
use PhpMyAdmin\Triggers\Triggers;
1515

1616
use function __;
1717
use function array_merge;

libraries/classes/Plugins/Export/ExportHtmlword.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
namespace PhpMyAdmin\Plugins\Export;
99

10-
use PhpMyAdmin\Database\Triggers;
1110
use PhpMyAdmin\DatabaseInterface;
1211
use PhpMyAdmin\Dbal\Connection;
1312
use PhpMyAdmin\Dbal\ResultInterface;
@@ -18,6 +17,7 @@
1817
use PhpMyAdmin\Properties\Options\Items\RadioPropertyItem;
1918
use PhpMyAdmin\Properties\Options\Items\TextPropertyItem;
2019
use PhpMyAdmin\Properties\Plugins\ExportPluginProperties;
20+
use PhpMyAdmin\Triggers\Triggers;
2121
use PhpMyAdmin\Util;
2222

2323
use function __;

libraries/classes/Plugins/Export/ExportOdt.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
namespace PhpMyAdmin\Plugins\Export;
99

10-
use PhpMyAdmin\Database\Triggers;
1110
use PhpMyAdmin\DatabaseInterface;
1211
use PhpMyAdmin\Dbal\Connection;
1312
use PhpMyAdmin\FieldMetadata;
@@ -19,6 +18,7 @@
1918
use PhpMyAdmin\Properties\Options\Items\RadioPropertyItem;
2019
use PhpMyAdmin\Properties\Options\Items\TextPropertyItem;
2120
use PhpMyAdmin\Properties\Plugins\ExportPluginProperties;
21+
use PhpMyAdmin\Triggers\Triggers;
2222
use PhpMyAdmin\Util;
2323

2424
use function __;

0 commit comments

Comments
 (0)