From c163393cc49bad8d1708ec13cfbd91f7ece919e6 Mon Sep 17 00:00:00 2001 From: fs Date: Mon, 20 Apr 2026 22:54:19 +0200 Subject: [PATCH] refactor(js): migrate core list pages to list module factory --- bin/js-contract-check.sh | 8 + .../Architecture/ListTemplateContractTest.php | 6 +- web/js/pages/admin-departments-index.js | 172 +++++++------ web/js/pages/admin-mail-log-index.js | 169 +++++++------ web/js/pages/admin-permissions-index.js | 131 +++++----- web/js/pages/admin-roles-index.js | 216 ++++++++--------- web/js/pages/admin-scheduled-jobs-index.js | 179 +++++++------- web/js/pages/admin-tenants-index.js | 227 +++++++++--------- web/js/pages/admin-users-index.js | 211 ++++++++-------- web/js/pages/search-index.js | 112 ++++----- 10 files changed, 699 insertions(+), 732 deletions(-) diff --git a/bin/js-contract-check.sh b/bin/js-contract-check.sh index 3c56b83..644c891 100755 --- a/bin/js-contract-check.sh +++ b/bin/js-contract-check.sh @@ -37,6 +37,14 @@ else ok "Frontend JS uses centralized app-http (except app-http/app-telemetry infrastructure)" fi +list_module_hits="$(rg -n "initStandardListPage\\(" web/js/pages modules/*/web/js/pages -g '*.js' || true)" +if [[ -n "${list_module_hits}" ]]; then + fail "Legacy initStandardListPage(...) usage found in page modules (use createListPageModule):" + echo "${list_module_hits}" >&2 +else + ok "List page modules use createListPageModule (no direct initStandardListPage calls)" +fi + runtime_files=( "modules/helpdesk/web/js/helpdesk-detail.js" "modules/helpdesk/web/js/helpdesk-domain-detail.js" diff --git a/tests/Architecture/ListTemplateContractTest.php b/tests/Architecture/ListTemplateContractTest.php index 56a36d2..fa68397 100644 --- a/tests/Architecture/ListTemplateContractTest.php +++ b/tests/Architecture/ListTemplateContractTest.php @@ -20,10 +20,10 @@ class ListTemplateContractTest extends TestCase $file . ' does not render toolbar directly and does not include shared list-filters partial.' ); $this->assertTrue( - str_contains($moduleContent, 'initStandardListPage(') - || str_contains($moduleContent, 'createListPageModule('), - $file . ' does not initialize list module via initStandardListPage/createListPageModule.' + str_contains($moduleContent, 'createListPageModule('), + $file . ' does not initialize list module via createListPageModule.' ); + $this->assertStringNotContainsString('initStandardListPage(', $moduleContent, $file); $this->assertStringNotContainsString('gridFiltersFromSchema(', $content, $file); $this->assertSame(0, preg_match('/