fix(audit): restructure module pages to avoid admin/ path collision
Module pages must use a unique top-level directory (audit/) instead of nesting under admin/ which collides with core's pages/admin/ during module:build symlink creation. Routes still map admin/* URLs to the audit/ page directory via manifest route targets. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,28 +16,28 @@ return [
|
||||
|
||||
'routes' => [
|
||||
// API audit pages
|
||||
['path' => 'admin/api-audit', 'target' => 'admin/api-audit/index'],
|
||||
['path' => 'admin/api-audit/view', 'target' => 'admin/api-audit/view'],
|
||||
['path' => 'admin/api-audit/data', 'target' => 'admin/api-audit/data'],
|
||||
['path' => 'admin/api-audit/purge', 'target' => 'admin/api-audit/purge'],
|
||||
['path' => 'admin/api-audit', 'target' => 'audit/api-audit/index'],
|
||||
['path' => 'admin/api-audit/view', 'target' => 'audit/api-audit/view'],
|
||||
['path' => 'admin/api-audit/data', 'target' => 'audit/api-audit/data'],
|
||||
['path' => 'admin/api-audit/purge', 'target' => 'audit/api-audit/purge'],
|
||||
// System audit pages
|
||||
['path' => 'admin/system-audit', 'target' => 'admin/system-audit/index'],
|
||||
['path' => 'admin/system-audit/view', 'target' => 'admin/system-audit/view'],
|
||||
['path' => 'admin/system-audit/data', 'target' => 'admin/system-audit/data'],
|
||||
['path' => 'admin/system-audit/purge', 'target' => 'admin/system-audit/purge'],
|
||||
['path' => 'admin/system-audit', 'target' => 'audit/system-audit/index'],
|
||||
['path' => 'admin/system-audit/view', 'target' => 'audit/system-audit/view'],
|
||||
['path' => 'admin/system-audit/data', 'target' => 'audit/system-audit/data'],
|
||||
['path' => 'admin/system-audit/purge', 'target' => 'audit/system-audit/purge'],
|
||||
// Import audit pages
|
||||
['path' => 'admin/import-audit', 'target' => 'admin/import-audit/index'],
|
||||
['path' => 'admin/import-audit/view', 'target' => 'admin/import-audit/view'],
|
||||
['path' => 'admin/import-audit/data', 'target' => 'admin/import-audit/data'],
|
||||
['path' => 'admin/import-audit/purge', 'target' => 'admin/import-audit/purge'],
|
||||
['path' => 'admin/import-audit', 'target' => 'audit/import-audit/index'],
|
||||
['path' => 'admin/import-audit/view', 'target' => 'audit/import-audit/view'],
|
||||
['path' => 'admin/import-audit/data', 'target' => 'audit/import-audit/data'],
|
||||
['path' => 'admin/import-audit/purge', 'target' => 'audit/import-audit/purge'],
|
||||
// User lifecycle audit pages
|
||||
['path' => 'admin/user-lifecycle-audit', 'target' => 'admin/user-lifecycle-audit/index'],
|
||||
['path' => 'admin/user-lifecycle-audit/view', 'target' => 'admin/user-lifecycle-audit/view'],
|
||||
['path' => 'admin/user-lifecycle-audit/data', 'target' => 'admin/user-lifecycle-audit/data'],
|
||||
['path' => 'admin/user-lifecycle-audit/purge', 'target' => 'admin/user-lifecycle-audit/purge'],
|
||||
['path' => 'admin/user-lifecycle-audit/restore', 'target' => 'admin/user-lifecycle-audit/restore'],
|
||||
['path' => 'admin/user-lifecycle-audit', 'target' => 'audit/user-lifecycle-audit/index'],
|
||||
['path' => 'admin/user-lifecycle-audit/view', 'target' => 'audit/user-lifecycle-audit/view'],
|
||||
['path' => 'admin/user-lifecycle-audit/data', 'target' => 'audit/user-lifecycle-audit/data'],
|
||||
['path' => 'admin/user-lifecycle-audit/purge', 'target' => 'audit/user-lifecycle-audit/purge'],
|
||||
['path' => 'admin/user-lifecycle-audit/restore', 'target' => 'audit/user-lifecycle-audit/restore'],
|
||||
// Frontend telemetry
|
||||
['path' => 'admin/frontend-telemetry/ingest', 'target' => 'admin/frontend-telemetry/ingest'],
|
||||
['path' => 'admin/frontend-telemetry/ingest', 'target' => 'audit/frontend-telemetry/ingest'],
|
||||
],
|
||||
'public_paths' => [],
|
||||
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
<?php
|
||||
|
||||
namespace MintyPHP\Module\Notifications\Service;
|
||||
|
||||
final class NotificationMessage
|
||||
{
|
||||
/**
|
||||
* @param array<string, mixed> $data
|
||||
* @param list<scalar|null> $titleParams
|
||||
* @param list<scalar|null> $bodyParams
|
||||
*/
|
||||
public function __construct(
|
||||
private readonly string $type,
|
||||
private readonly string $title,
|
||||
private readonly ?string $body = null,
|
||||
private readonly ?string $link = null,
|
||||
private readonly array $data = [],
|
||||
private readonly ?string $titleKey = null,
|
||||
private readonly array $titleParams = [],
|
||||
private readonly ?string $bodyKey = null,
|
||||
private readonly array $bodyParams = []
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $data
|
||||
*/
|
||||
public static function plain(
|
||||
string $type,
|
||||
string $title,
|
||||
?string $body = null,
|
||||
?string $link = null,
|
||||
array $data = []
|
||||
): self {
|
||||
return new self($type, $title, $body, $link, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a locale-neutral notification message while still storing a translated fallback.
|
||||
*
|
||||
* @param list<scalar|null> $titleParams
|
||||
* @param list<scalar|null> $bodyParams
|
||||
* @param array<string, mixed> $data
|
||||
*/
|
||||
public static function localized(
|
||||
string $type,
|
||||
string $titleKey,
|
||||
array $titleParams = [],
|
||||
?string $bodyKey = null,
|
||||
array $bodyParams = [],
|
||||
?string $link = null,
|
||||
array $data = []
|
||||
): self {
|
||||
$resolvedTitle = self::translate($titleKey, $titleParams);
|
||||
$resolvedBody = $bodyKey !== null && $bodyKey !== '' ? self::translate($bodyKey, $bodyParams) : null;
|
||||
|
||||
return new self(
|
||||
$type,
|
||||
$resolvedTitle,
|
||||
$resolvedBody,
|
||||
$link,
|
||||
$data,
|
||||
$titleKey,
|
||||
self::normalizeParams($titleParams),
|
||||
$bodyKey !== null && $bodyKey !== '' ? $bodyKey : null,
|
||||
self::normalizeParams($bodyParams)
|
||||
);
|
||||
}
|
||||
|
||||
public function type(): string
|
||||
{
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
public function title(): string
|
||||
{
|
||||
return $this->title;
|
||||
}
|
||||
|
||||
public function body(): ?string
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
public function link(): ?string
|
||||
{
|
||||
return $this->link;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function data(): array
|
||||
{
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
public function titleKey(): ?string
|
||||
{
|
||||
return $this->titleKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<scalar|null>
|
||||
*/
|
||||
public function titleParams(): array
|
||||
{
|
||||
return $this->titleParams;
|
||||
}
|
||||
|
||||
public function bodyKey(): ?string
|
||||
{
|
||||
return $this->bodyKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<scalar|null>
|
||||
*/
|
||||
public function bodyParams(): array
|
||||
{
|
||||
return $this->bodyParams;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<mixed> $params
|
||||
* @return list<scalar|null>
|
||||
*/
|
||||
private static function normalizeParams(array $params): array
|
||||
{
|
||||
$normalized = [];
|
||||
foreach ($params as $value) {
|
||||
if (is_scalar($value) || $value === null) {
|
||||
$normalized[] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
return array_values($normalized);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<mixed> $params
|
||||
*/
|
||||
private static function translate(string $key, array $params): string
|
||||
{
|
||||
$normalized = self::normalizeParams($params);
|
||||
return (string) t($key, ...$normalized);
|
||||
}
|
||||
}
|
||||
@@ -71,11 +71,11 @@ class AuthzUiActionContractTest extends TestCase
|
||||
public function testModuleAuditActionsUseInlinePageCapabilities(): void
|
||||
{
|
||||
$actions = [
|
||||
'modules/audit/pages/admin/api-audit/index().php',
|
||||
'modules/audit/pages/admin/system-audit/index().php',
|
||||
'modules/audit/pages/admin/import-audit/index().php',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/index().php',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/view($id).php',
|
||||
'modules/audit/pages/audit/api-audit/index().php',
|
||||
'modules/audit/pages/audit/system-audit/index().php',
|
||||
'modules/audit/pages/audit/import-audit/index().php',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/index().php',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/view($id).php',
|
||||
];
|
||||
|
||||
foreach ($actions as $action) {
|
||||
|
||||
@@ -36,13 +36,13 @@ trait AuthzUiContractSupport
|
||||
'UiCapabilityMap::PAGE_STATS_INDEX',
|
||||
],
|
||||
'api audit index' => [
|
||||
'modules/audit/pages/admin/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/api-audit/index().php',
|
||||
'modules/audit/pages/audit/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/api-audit/index().php',
|
||||
null,
|
||||
],
|
||||
'import audit index' => [
|
||||
'modules/audit/pages/admin/import-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/import-audit/index().php',
|
||||
'modules/audit/pages/audit/import-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/import-audit/index().php',
|
||||
null,
|
||||
],
|
||||
'scheduled jobs index' => [
|
||||
@@ -51,18 +51,18 @@ trait AuthzUiContractSupport
|
||||
'UiCapabilityMap::PAGE_JOBS_PURGE',
|
||||
],
|
||||
'system audit index' => [
|
||||
'modules/audit/pages/admin/system-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/system-audit/index().php',
|
||||
'modules/audit/pages/audit/system-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/system-audit/index().php',
|
||||
null,
|
||||
],
|
||||
'user lifecycle index' => [
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/index().php',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/index().php',
|
||||
null,
|
||||
],
|
||||
'user lifecycle view' => [
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/view(default).phtml',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/view($id).php',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/view(default).phtml',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/view($id).php',
|
||||
null,
|
||||
],
|
||||
];
|
||||
|
||||
@@ -74,13 +74,13 @@ class AuthzUiTemplateContractTest extends TestCase
|
||||
$templates = [
|
||||
'templates/partials/app-main-aside.phtml',
|
||||
'templates/partials/app-main-aside-icon-bar.phtml',
|
||||
'modules/audit/pages/admin/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/system-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/import-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/system-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/import-audit/index(default).phtml',
|
||||
'pages/admin/scheduled-jobs/index(default).phtml',
|
||||
'pages/admin/stats/index(default).phtml',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/view(default).phtml',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/view(default).phtml',
|
||||
'pages/admin/users/index(default).phtml',
|
||||
'pages/admin/users/create(default).phtml',
|
||||
'pages/admin/tenants/edit(default).phtml',
|
||||
|
||||
@@ -53,10 +53,10 @@ trait ListContractFiles
|
||||
'pages/admin/mail-log/data().php',
|
||||
'pages/admin/scheduled-jobs/data().php',
|
||||
'pages/admin/scheduled-jobs/runs-data($id).php',
|
||||
'modules/audit/pages/admin/api-audit/data().php',
|
||||
'modules/audit/pages/admin/import-audit/data().php',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/data().php',
|
||||
'modules/audit/pages/admin/system-audit/data().php',
|
||||
'modules/audit/pages/audit/api-audit/data().php',
|
||||
'modules/audit/pages/audit/import-audit/data().php',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/data().php',
|
||||
'modules/audit/pages/audit/system-audit/data().php',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -76,10 +76,10 @@ trait ListContractFiles
|
||||
'pages/admin/mail-log/data().php' => "gridParseFiltersFromSchemaFile(__DIR__ . '/filter-schema.php'",
|
||||
'pages/admin/scheduled-jobs/data().php' => "gridParseFiltersFromSchemaFile(__DIR__ . '/filter-schema.php'",
|
||||
'pages/admin/scheduled-jobs/runs-data($id).php' => "gridParseFiltersFromSchemaFile(__DIR__ . '/runs-filter-schema.php'",
|
||||
'modules/audit/pages/admin/api-audit/data().php' => "gridParseFiltersFromSchemaFile(__DIR__ . '/filter-schema.php'",
|
||||
'modules/audit/pages/admin/import-audit/data().php' => "gridParseFiltersFromSchemaFile(__DIR__ . '/filter-schema.php'",
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/data().php' => "gridParseFiltersFromSchemaFile(__DIR__ . '/filter-schema.php'",
|
||||
'modules/audit/pages/admin/system-audit/data().php' => "gridParseFiltersFromSchemaFile(__DIR__ . '/filter-schema.php'",
|
||||
'modules/audit/pages/audit/api-audit/data().php' => "gridParseFiltersFromSchemaFile(__DIR__ . '/filter-schema.php'",
|
||||
'modules/audit/pages/audit/import-audit/data().php' => "gridParseFiltersFromSchemaFile(__DIR__ . '/filter-schema.php'",
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/data().php' => "gridParseFiltersFromSchemaFile(__DIR__ . '/filter-schema.php'",
|
||||
'modules/audit/pages/audit/system-audit/data().php' => "gridParseFiltersFromSchemaFile(__DIR__ . '/filter-schema.php'",
|
||||
];
|
||||
}
|
||||
|
||||
@@ -98,10 +98,10 @@ trait ListContractFiles
|
||||
'pages/admin/permissions/index(default).phtml',
|
||||
'pages/admin/mail-log/index(default).phtml',
|
||||
'pages/admin/scheduled-jobs/index(default).phtml',
|
||||
'modules/audit/pages/admin/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/import-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/system-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/import-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/system-audit/index(default).phtml',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -120,10 +120,10 @@ trait ListContractFiles
|
||||
'pages/admin/permissions/index().php',
|
||||
'pages/admin/mail-log/index().php',
|
||||
'pages/admin/scheduled-jobs/index().php',
|
||||
'modules/audit/pages/admin/api-audit/index().php',
|
||||
'modules/audit/pages/admin/import-audit/index().php',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/index().php',
|
||||
'modules/audit/pages/admin/system-audit/index().php',
|
||||
'modules/audit/pages/audit/api-audit/index().php',
|
||||
'modules/audit/pages/audit/import-audit/index().php',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/index().php',
|
||||
'modules/audit/pages/audit/system-audit/index().php',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -141,10 +141,10 @@ trait ListContractFiles
|
||||
'pages/admin/permissions/index(default).phtml',
|
||||
'pages/admin/mail-log/index(default).phtml',
|
||||
'pages/admin/scheduled-jobs/index(default).phtml',
|
||||
'modules/audit/pages/admin/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/import-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/system-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/import-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/system-audit/index(default).phtml',
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@ final class ListTitlebarContractFiles
|
||||
'pages/admin/permissions/index(default).phtml',
|
||||
'pages/admin/mail-log/index(default).phtml',
|
||||
'pages/admin/scheduled-jobs/index(default).phtml',
|
||||
'modules/audit/pages/admin/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/import-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/system-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/import-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/system-audit/index(default).phtml',
|
||||
'modules/addressbook/pages/address-book/index(default).phtml',
|
||||
'pages/search/index(default).phtml',
|
||||
'pages/help/hotkeys(default).phtml',
|
||||
|
||||
@@ -26,10 +26,10 @@ class ListUiSharedPartialsContractTest extends TestCase
|
||||
{
|
||||
return [
|
||||
'pages/admin/scheduled-jobs/index(default).phtml',
|
||||
'modules/audit/pages/admin/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/import-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/admin/system-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/api-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/import-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/index(default).phtml',
|
||||
'modules/audit/pages/audit/system-audit/index(default).phtml',
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -18,12 +18,12 @@ final class SecurityLoggingRuntimeContractTest extends TestCase
|
||||
sort($violations);
|
||||
|
||||
self::assertSame(
|
||||
['modules/audit/pages/admin/frontend-telemetry/ingest().php'],
|
||||
['modules/audit/pages/audit/frontend-telemetry/ingest().php'],
|
||||
$violations,
|
||||
"Unexpected error_log() usage outside the telemetry ingest fallback:\n" . implode("\n", $violations)
|
||||
);
|
||||
|
||||
$content = $this->readProjectFile('modules/audit/pages/admin/frontend-telemetry/ingest().php');
|
||||
$content = $this->readProjectFile('modules/audit/pages/audit/frontend-telemetry/ingest().php');
|
||||
self::assertStringContainsString(
|
||||
"error_log('[frontend-telemetry] ingest record_failed request_id=' . RequestContext::id());",
|
||||
$content
|
||||
|
||||
@@ -31,16 +31,16 @@ final class StatusTaxonomyContractFiles
|
||||
public static function taxonomySchemaExpectations(): array
|
||||
{
|
||||
return [
|
||||
'modules/audit/pages/admin/system-audit/filter-schema.php' => [
|
||||
'modules/audit/pages/audit/system-audit/filter-schema.php' => [
|
||||
'SystemAuditOutcome::values()',
|
||||
'SystemAuditChannel::values()',
|
||||
],
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/filter-schema.php' => [
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/filter-schema.php' => [
|
||||
'gridEnumSanitizer(UserLifecycleAction::class)',
|
||||
'gridEnumSanitizer(UserLifecycleStatus::class)',
|
||||
'gridEnumSanitizer(UserLifecycleTriggerType::class)',
|
||||
],
|
||||
'modules/audit/pages/admin/import-audit/filter-schema.php' => [
|
||||
'modules/audit/pages/audit/import-audit/filter-schema.php' => [
|
||||
'ImportAuditStatus::values()',
|
||||
],
|
||||
'pages/admin/scheduled-jobs/filter-schema.php' => [
|
||||
@@ -62,9 +62,9 @@ final class StatusTaxonomyContractFiles
|
||||
public static function taxonomyDataEndpointFiles(): array
|
||||
{
|
||||
return [
|
||||
'modules/audit/pages/admin/system-audit/data().php',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/data().php',
|
||||
'modules/audit/pages/admin/import-audit/data().php',
|
||||
'modules/audit/pages/audit/system-audit/data().php',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/data().php',
|
||||
'modules/audit/pages/audit/import-audit/data().php',
|
||||
'pages/admin/scheduled-jobs/data().php',
|
||||
'pages/admin/scheduled-jobs/runs-data($id).php',
|
||||
'pages/admin/mail-log/data().php',
|
||||
@@ -94,16 +94,16 @@ final class StatusTaxonomyContractFiles
|
||||
'lib/Service/Tenant/TenantService.php',
|
||||
'lib/Repository/Tenant/TenantRepository.php',
|
||||
'lib/Repository/Stats/AdminStatsRepository.php',
|
||||
'modules/audit/pages/admin/system-audit/data().php',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/data().php',
|
||||
'modules/audit/pages/admin/import-audit/data().php',
|
||||
'modules/audit/pages/audit/system-audit/data().php',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/data().php',
|
||||
'modules/audit/pages/audit/import-audit/data().php',
|
||||
'pages/admin/scheduled-jobs/data().php',
|
||||
'pages/admin/scheduled-jobs/runs-data($id).php',
|
||||
'pages/admin/mail-log/data().php',
|
||||
'pages/admin/tenants/data().php',
|
||||
'modules/audit/pages/admin/system-audit/index().php',
|
||||
'modules/audit/pages/admin/user-lifecycle-audit/index().php',
|
||||
'modules/audit/pages/admin/import-audit/index().php',
|
||||
'modules/audit/pages/audit/system-audit/index().php',
|
||||
'modules/audit/pages/audit/user-lifecycle-audit/index().php',
|
||||
'modules/audit/pages/audit/import-audit/index().php',
|
||||
'pages/admin/scheduled-jobs/index().php',
|
||||
'pages/admin/mail-log/index().php',
|
||||
];
|
||||
|
||||
@@ -10,7 +10,7 @@ final class StatusTaxonomyUiContractTest extends TestCase
|
||||
|
||||
public function testImportAuditIndexTemplateDoesNotUseLegacyStatusMapper(): void
|
||||
{
|
||||
$content = $this->readProjectFile('modules/audit/pages/admin/import-audit/index(default).phtml');
|
||||
$content = $this->readProjectFile('modules/audit/pages/audit/import-audit/index(default).phtml');
|
||||
$moduleContent = $this->readProjectFile('modules/audit/web/js/pages/admin-import-audit-index.js');
|
||||
$this->assertStringNotContainsString('const statusLabel = (value) =>', $moduleContent);
|
||||
$this->assertStringNotContainsString("if (key === 'running')", $moduleContent);
|
||||
|
||||
1
web/modules/audit
Symbolic link
1
web/modules/audit
Symbolic link
@@ -0,0 +1 @@
|
||||
/var/www/modules/audit/web
|
||||
Reference in New Issue
Block a user