diff --git a/plugin/think-plugs-system/src/builder/ConfigBuilder.php b/plugin/think-plugs-system/src/builder/ConfigBuilder.php index bc8c48035..017f874a4 100644 --- a/plugin/think-plugs-system/src/builder/ConfigBuilder.php +++ b/plugin/think-plugs-system/src/builder/ConfigBuilder.php @@ -6,6 +6,7 @@ namespace plugin\system\builder; use think\admin\builder\BuilderLang; use think\admin\builder\form\FormBuilder; +use think\admin\builder\form\FormNode; use think\admin\builder\form\module\FormModules; use think\admin\builder\page\PageBuilder; use think\admin\builder\page\PageNode; @@ -23,42 +24,42 @@ class ConfigBuilder public static function buildIndexPage(array $context): PageBuilder { $site = is_array($context['site'] ?? null) ? $context['site'] : []; - $storage = is_array($context['storage'] ?? null) ? $context['storage'] : []; $isSuper = !empty($context['issuper']); $isDebug = !empty($context['appDebug']); - $storageEditable = !empty($context['storageEditable']); - $storageDriver = strval($context['storageDriver'] ?? 'local'); - $storageName = strval($context['storageName'] ?? $storageDriver); $systemInfo = is_array($context['systemInfo'] ?? null) ? $context['systemInfo'] : []; $showSystemButton = !empty($context['canEditSystem']); $pluginCenter = is_array($context['pluginCenter'] ?? null) ? $context['pluginCenter'] : []; return PageBuilder::domPage() - ->define(function ($page) use ($site, $storage, $isSuper, $isDebug, $storageEditable, $storageDriver, $storageName, $systemInfo, $showSystemButton, $pluginCenter) { + ->define(function ($page) use ($site, $isSuper, $isDebug, $systemInfo, $showSystemButton, $pluginCenter) { $page->title('系统参数配置')->contentClass(''); self::buildHeaderButtons($page, $isSuper, $showSystemButton); - PageModules::card($page, ['title' => '系统概览', 'remark' => '统一管理运行模式、存储中心与系统基础参数', 'class' => 'layui-card mb15'], function (PageNode $body) use ($isDebug, $storageName, $site, $pluginCenter) { + PageModules::card($page, ['title' => '系统概览', 'remark' => '统一管理运行模式与系统基础参数', 'class' => 'layui-card mb15'], function (PageNode $body) use ($isDebug, $site, $pluginCenter) { + $body->html(<<<'HTML' + +HTML); PageModules::paragraphs($body, [ - '当前后台使用 System 统一维护运行模式、文件存储与系统基础参数。', + '当前后台使用 System 统一维护运行模式与系统基础参数。', ], ['class' => 'ta-desc mt0']); PageModules::kvGrid($body, [ ['label' => '运行模式', 'value' => $isDebug ? '开发模式' : '生产模式'], - ['label' => '默认存储驱动', 'value' => $storageName], ['label' => '站点名称', 'value' => strval($site['website_name'] ?? '-')], ['label' => '插件中心', 'value' => !empty($pluginCenter['enabled']) ? '已启用' : '已禁用'], ['label' => '菜单入口策略', 'value' => !empty($pluginCenter['show_menu']) ? '显示插件中心菜单' : '隐藏插件中心菜单'], - ]); + ], ['class' => 'ta-kv system-overview-kv']); }); if ($isSuper) { self::buildSummaryPanels($page, [ 'isDebug' => $isDebug, - 'storageEditable' => $storageEditable, - 'storageDriver' => $storageDriver, - 'storageName' => $storageName, - 'storage' => $storage, 'site' => $site, 'systemInfo' => $systemInfo, ]); @@ -67,6 +68,242 @@ class ConfigBuilder ->build(); } + private static function buildEntryThemeSection(FormNode $form, string $siteThemeKey, string $siteThemeLabel): void + { + FormModules::section($form, [ + 'title' => '入口与主题', + 'description' => '登录入口、登录标题与后台默认主题集中维护,便于统一入口体验。', + ], function (FormNode $section) use ($siteThemeKey, $siteThemeLabel) { + $grid = $section->div()->class('layui-row layui-col-space15 system-config-form-row system-config-cols-3'); + + $login = $grid->div()->class('layui-col-xs4 system-config-form-col'); + $login->fields(function ($fields) { + $fields->text('site[login_title]', '登录表单标题', 'Login Title', true, '登录页主标题会显示在登录表单上方。', null, [ + 'placeholder' => '请输入登录页面的表单标题', + 'vali-name' => '登录标题', + ]); + }); + + $entry = $grid->div()->class('layui-col-xs4 system-config-form-col'); + $entry->fields(function ($fields) { + $fields->text('site[login_entry]', '后台登录入口', 'Login Entry', true, '由英文字母开头,修改后原地址不能继续访问。', '[A-Za-z][A-Za-z0-9_-]*', [ + 'placeholder' => '例如 system 或 admin', + 'maxlength' => 32, + 'vali-name' => '后台登录入口', + ]); + }); + + $theme = $grid->div()->class('layui-col-xs4 system-config-form-col'); + FormModules::pickerField($theme, [ + 'title' => '后台默认配色', + 'subtitle' => 'Theme Style', + 'hidden_name' => 'site[theme]', + 'hidden_value' => $siteThemeKey, + 'value' => $siteThemeLabel, + 'attrs' => ['data-open-site-theme' => null], + 'input_attrs' => ['data-site-theme-text' => null], + 'help' => '保存后作为后台默认主题,用户个人主题仍可单独切换。', + ]); + + $host = $section->div()->class('mt15 system-config-single'); + $host->fields(function ($fields) { + $fields->text('site[host]', '站点基础域名', 'Site Host', false, '用于商城 H5、分享链接和外部回调等完整域名场景。', 'url', [ + 'vali-name' => '站点域名', + 'placeholder' => '例如 https://admin.example.com', + ]); + }); + FormModules::note($host, '建议填写不带结尾斜杠的完整域名,保存时会自动去掉末尾的 /。'); + }); + } + + private static function buildPluginCenterSection(FormNode $form): void + { + FormModules::section($form, [ + 'title' => '插件中心', + 'description' => '插件中心已合并进 System,这里只保留启停与菜单展示策略。', + ], function (FormNode $section) { + $grid = $section->div()->class('layui-row layui-col-space15 system-config-form-row system-config-cols-2'); + + $status = $grid->div()->class('layui-col-xs6 system-config-form-col'); + $status->fields(function ($fields) { + $fields->radio('plugin_center[enabled]', '插件中心状态', 'Center Status', '', true, [ + 'required-error' => '请选择插件中心状态!', + ])->options([ + '1' => '启用', + '0' => '禁用', + ])->defaultValue('1'); + }); + + $menu = $grid->div()->class('layui-col-xs6 system-config-form-col'); + $menu->fields(function ($fields) { + $fields->radio('plugin_center[show_menu]', '菜单显示策略', 'Menu Display', '', true, [ + 'required-error' => '请选择菜单显示策略!', + ])->options([ + '1' => '显示菜单节点', + '0' => '隐藏菜单节点', + ])->defaultValue('1'); + }); + }); + } + + private static function buildRuntimeSection(FormNode $form): void + { + FormModules::section($form, [ + 'title' => '运行参数', + 'description' => '维护队列日志保留时长,避免运行参数散落在其它页面。', + ], function (FormNode $section) { + $section->fields(function ($fields) { + $fields->text('runtime[queue_retain_days]', '队列保留天数', 'Queue Days', true, '队列日志默认保留天数,最小值为 1。', null, [ + 'type' => 'number', + 'min' => 1, + 'vali-name' => '保留天数', + 'placeholder' => '请输入队列日志保留天数', + ])->defaultValue(7); + }); + }); + } + + private static function buildSecurityResourceSection(FormNode $form): void + { + FormModules::section($form, [ + 'title' => '安全与登录资源', + 'description' => 'JWT 密钥与浏览器图标并排维护,登录背景图单独管理。', + ], function (FormNode $section) { + $grid = $section->div()->class('layui-row layui-col-space15 system-config-form-row system-config-cols-2'); + + $jwt = $grid->div()->class('layui-col-xs6 system-config-form-col'); + $jwt->fields(function ($fields) { + $field = $fields->password('security[jwt_secret]', 'JWT 接口密钥', 'Jwt Key', false, '保留默认星号表示不修改;点击右侧按钮生成新的 32 位随机密钥。', '.{32}', [ + 'maxlength' => 32, + 'vali-name' => '接口密钥', + 'autocomplete' => 'new-password', + 'placeholder' => '保留默认星号则不修改,点击右侧按钮可生成新密钥', + ]); + $field->inputRightIcon('layui-icon-refresh', ['id' => 'RefreshJwtKey']); + }); + + $icon = $grid->div()->class('layui-col-xs6 system-config-form-col'); + $icon->fields(function ($fields) { + $field = $fields->text('site[browser_icon]', '浏览器小图标', 'Browser Icon', true, '建议上传 128x128 或 256x256 的 JPG/PNG/JPEG 图片。', 'url', [ + 'vali-name' => '图标文件', + 'placeholder' => '请上传浏览器图标', + 'data-tips-image' => null, + 'data-tips-hover' => null, + ]); + $field->inputRightIcon('layui-icon-upload-drag', [ + 'data-file' => 'btn', + 'data-type' => 'png,jpg,jpeg', + 'data-field' => 'site[browser_icon]', + ]); + }); + + $background = $section->div()->class('system-config-single mt5'); + $background->fields(function ($fields) { + $fields->images('site[login_background_images]', '登录背景图片', 'Background Image', false); + }); + FormModules::note($background, '建议保持 2-4 张横向背景图,风格和当前后台主题尽量统一。'); + }); + } + + private static function buildBrandSection(FormNode $form): void + { + FormModules::section($form, [ + 'title' => '站点品牌信息', + 'description' => '浏览器标题、后台品牌位与登录页底部信息分组维护。', + ], function (FormNode $section) { + $main = $section->div()->class('layui-row layui-col-space15 system-config-form-row system-config-cols-3'); + + $site = $main->div()->class('layui-col-xs4 system-config-form-col'); + $site->fields(function ($fields) { + $fields->text('site[website_name]', '网站名称', 'Site Name', true, '显示在浏览器标签页和页面标题中。', null, [ + 'placeholder' => '请输入网站名称', + 'vali-name' => '网站名称', + ]); + }); + + $app = $main->div()->class('layui-col-xs4 system-config-form-col'); + $app->fields(function ($fields) { + $fields->text('site[application_name]', '后台程序名称', 'App Name', true, '显示在后台左上标题处。', null, [ + 'placeholder' => '请输入程序名称', + 'vali-name' => '程序名称', + ]); + }); + + $version = $main->div()->class('layui-col-xs4 system-config-form-col'); + $version->fields(function ($fields) { + $fields->text('site[application_version]', '后台程序版本', 'App Version', false, '用于后台版本标识和发布后的版本核验。', null, [ + 'placeholder' => '请输入程序版本', + ]); + }); + + $filing = $section->div()->class('layui-row layui-col-space15 system-config-form-row system-config-cols-3'); + + $police = $filing->div()->class('layui-col-xs4 system-config-form-col'); + $police->fields(function ($fields) { + $fields->text('site[public_security_filing]', '公安备案号', 'Beian', false, '', null, [ + 'placeholder' => '请输入公安备案号', + ]); + }); + + $miit = $filing->div()->class('layui-col-xs4 system-config-form-col'); + $miit->fields(function ($fields) { + $fields->text('site[miit_filing]', '网站备案号', 'Miitbeian', false, '', null, [ + 'placeholder' => '请输入网站备案号', + ]); + }); + + $copyright = $filing->div()->class('layui-col-xs4 system-config-form-col'); + $copyright->fields(function ($fields) { + $fields->text('site[copyright]', '网站版权信息', 'Copyright', true, '上线时建议同步补齐备案与版权信息。', null, [ + 'placeholder' => '请输入版权信息', + 'vali-name' => '版权信息', + ]); + }); + }); + } + + private static function renderSystemFormStyle(): string + { + return <<<'STYLE' +.system-config-form .system-config-form-row { + display: flex; + flex-wrap: wrap; + align-items: flex-start; +} +.system-config-form .system-config-cols-2 > .system-config-form-col { + width: 50% !important; + max-width: 50%; + box-sizing: border-box; +} +.system-config-form .system-config-cols-3 > .system-config-form-col { + width: 33.333333% !important; + max-width: 33.333333%; + box-sizing: border-box; +} +.system-config-form .system-config-form-col .layui-form-item { + margin-bottom: 14px; +} +.system-config-form .system-config-single .layui-form-item { + margin-bottom: 10px; +} +.system-config-form .system-config-form-col .help-label, +.system-config-form .system-config-form-col .help-block { + display: block; + max-width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +@media (max-width: 680px) { + .system-config-form .system-config-cols-2 > .system-config-form-col, + .system-config-form .system-config-cols-3 > .system-config-form-col { + width: 100% !important; + max-width: 100%; + } +} +STYLE; + } + /** * @param array $context */ @@ -87,7 +324,15 @@ class ConfigBuilder ->open('返回系统配置', sysuri('system/config/index')); }); - PageModules::card($page, ['title' => '存储概览', 'remark' => '统一管理文件上传、命名策略与外链输出', 'class' => 'layui-card mb15'], function (PageNode $body) use ($driverName, $storage, $files) { + PageModules::card($page, ['title' => '存储概览', 'remark' => '统一管理文件上传、命名策略与外链输出', 'class' => 'layui-card mb15'], function (PageNode $body) use ($driverName, $storage) { + $body->html(<<<'HTML' + +HTML); PageModules::paragraphs($body, [ '系统所有上传驱动共享一套全局策略,切换默认驱动后,上传入口、命名方式和链接输出会同步生效。', ], ['class' => 'ta-desc mt0']); @@ -95,8 +340,7 @@ class ConfigBuilder ['label' => '当前默认驱动', 'value' => $driverName], ['label' => '命名策略', 'value' => strval($storage['naming_rule'] ?? 'xmd5')], ['label' => '链接策略', 'value' => strval($storage['link_mode'] ?? 'none')], - ['label' => '可用驱动数量', 'value' => strval(count($files))], - ]); + ], ['class' => 'ta-kv storage-overview-kv']); }); PageModules::card($page, ['title' => '存储引擎', 'remark' => '系统默认文件存储方式,可按驱动分别配置', 'class' => 'layui-card mb15'], function (PageNode $body) use ($files, $driver, $canEdit, $allowedExtensionsText) { @@ -134,147 +378,13 @@ class ConfigBuilder ->class('system-config-form') ->data('auto', 'true') ->action(sysuri()); + $form->html(''); - FormModules::section($form, [ - 'title' => '入口与主题', - 'description' => '登录入口由插件注册前缀决定,这里负责维护登录页标题和后台默认主题。', - ], function ($section) use ($siteThemeKey, $siteThemeLabel) { - $grid = $section->div()->class('layui-row layui-col-space15'); - - $col = $grid->div()->class('layui-col-xs12 layui-col-md4'); - $col->fields(function ($fields) { - $fields->text('site[login_title]', '登录表单标题', 'Login Title', true, '登录页主标题会显示在登录表单上方。', null, [ - 'placeholder' => '请输入登录页面的表单标题', - 'vali-name' => '登录标题', - ]); - }); - - $entry = $grid->div()->class('layui-col-xs12 layui-col-md4'); - $entry->fields(function ($fields) { - $fields->text('site[login_entry]', '后台登录入口', 'Login Entry', true, '后台登录入口是由英文字母开头,且不能有相同名称的模块,设置之后原地址不能继续访问,请谨慎配置 ~', '[A-Za-z][A-Za-z0-9_-]*', [ - 'placeholder' => '例如 system 或 admin', - 'maxlength' => 32, - 'vali-name' => '后台登录入口', - ]); - }); - - $theme = $grid->div()->class('layui-col-xs12 layui-col-md4'); - FormModules::pickerField($theme, [ - 'title' => '后台默认配色', - 'subtitle' => 'Theme Style', - 'hidden_name' => 'site[theme]', - 'hidden_value' => $siteThemeKey, - 'value' => $siteThemeLabel, - 'attrs' => ['data-open-site-theme' => null], - 'input_attrs' => ['data-site-theme-text' => null], - 'help' => '保存后会作为后台默认主题,用户个人主题仍可单独切换。', - ]); - - $host = $section->div()->class('mt15'); - $host->fields(function ($fields) { - $fields->text('site[host]', '站点基础域名', 'Site Host', false, '可选。用于商城 H5、分享链接和外部回调等需要完整域名的业务场景。', 'url', [ - 'vali-name' => '站点域名', - 'placeholder' => '例如 https://admin.example.com', - ]); - }); - FormModules::note($host, '建议填写不带结尾斜杠的完整域名,保存时会自动去掉末尾的 /。'); - }); - - FormModules::section($form, [ - 'title' => '插件中心', - 'description' => '插件中心已经合并进 System,这里只保留启停和菜单展示策略两个全局开关。', - ], function ($section) { - $section->fields(function ($fields) { - $fields->radio('plugin_center[enabled]', '插件中心状态', 'Center Status', '', true, [ - 'required-error' => '请选择插件中心状态!', - ])->options([ - '1' => '启用', - '0' => '禁用', - ])->defaultValue('1')->radio('plugin_center[show_menu]', '菜单显示策略', 'Menu Display', '', true, [ - 'required-error' => '请选择菜单显示策略!', - ])->options([ - '1' => '显示菜单节点', - '0' => '隐藏菜单节点', - ])->defaultValue('1'); - }); - }); - - FormModules::section($form, [ - 'title' => '运行参数', - 'description' => '维护队列日志保留时长,避免运行参数散落在其它页面。', - ], function ($section) { - $section->fields(function ($fields) { - $fields->text('runtime[queue_retain_days]', '队列保留天数', 'Queue Days', true, '队列日志的默认保留天数,最小值为 1。', null, [ - 'type' => 'number', - 'min' => 1, - 'vali-name' => '保留天数', - 'placeholder' => '请输入队列日志保留天数', - ])->defaultValue(7); - }); - }); - - FormModules::section($form, [ - 'title' => '安全与登录资源', - 'description' => '统一维护 JWT 密钥、浏览器图标以及登录背景图片。', - ], function ($section) { - $grid = $section->div()->class('layui-row layui-col-space15'); - - $col1 = $grid->div()->class('layui-col-xs12 layui-col-md6'); - $col1->fields(function ($fields) { - $field = $fields->password('security[jwt_secret]', 'JWT 接口密钥', 'Jwt Key', false, '保留默认星号表示不修改当前密钥,点击右侧按钮可生成新的 32 位随机密钥。', '.{32}', [ - 'maxlength' => 32, - 'vali-name' => '接口密钥', - 'autocomplete' => 'new-password', - 'placeholder' => '保留默认星号则不修改,点击右侧按钮可生成新密钥', - ]); - $field->inputRightIcon('layui-icon-refresh', ['id' => 'RefreshJwtKey']); - }); - - $col2 = $grid->div()->class('layui-col-xs12 layui-col-md6'); - $col2->fields(function ($fields) { - $field = $fields->text('site[browser_icon]', '浏览器小图标', 'Browser Icon', true, '建议上传 128x128 或 256x256 的 JPG/PNG/JPEG 图片。', 'url', [ - 'vali-name' => '图标文件', - 'placeholder' => '请上传浏览器图标', - 'data-tips-image' => null, - 'data-tips-hover' => null, - ]); - $field->inputRightIcon('layui-icon-upload-drag', [ - 'data-file' => 'btn', - 'data-type' => 'png,jpg,jpeg', - 'data-field' => 'site[browser_icon]', - ]); - }); - - $col3 = $grid->div()->class('layui-col-xs12'); - $col3->fields(function ($fields) { - $fields->images('site[login_background_images]', '登录背景图片', 'Background Image', false); - }); - FormModules::note($col3, '建议保持 2-4 张横向背景图,风格和当前后台主题尽量统一。'); - }); - - FormModules::section($form, [ - 'title' => '站点品牌信息', - 'description' => '这部分字段会出现在浏览器标题、后台品牌位和登录页底部。', - ], function ($section) { - $section->fields(function ($fields) { - $fields->text('site[website_name]', '网站名称', 'Site Name', true, '网站名称将显示在浏览器标签页和页面标题中。', null, [ - 'placeholder' => '请输入网站名称', - 'vali-name' => '网站名称', - ])->text('site[application_name]', '后台程序名称', 'App Name', true, '管理程序名称显示在后台左上标题处。', null, [ - 'placeholder' => '请输入程序名称', - 'vali-name' => '程序名称', - ])->text('site[application_version]', '后台程序版本', 'App Version', false, '用于后台版本标识和发布后的版本核验。', null, [ - 'placeholder' => '请输入程序版本', - ])->text('site[public_security_filing]', '公安备案号', 'Beian', false, '', null, [ - 'placeholder' => '请输入公安备案号', - ])->text('site[miit_filing]', '网站备案号', 'Miitbeian', false, '', null, [ - 'placeholder' => '请输入网站备案号', - ])->text('site[copyright]', '网站版权信息', 'Copyright', true, '网站上线时建议同步补齐备案与版权信息。', null, [ - 'placeholder' => '请输入版权信息', - 'vali-name' => '版权信息', - ]); - }); - }); + self::buildEntryThemeSection($form, $siteThemeKey, $siteThemeLabel); + self::buildPluginCenterSection($form); + self::buildRuntimeSection($form); + self::buildSecurityResourceSection($form); + self::buildBrandSection($form); $form->actions(function ($actions) { $actions->submit('保存修改')->cancel('取消修改', '确定要取消修改吗?'); @@ -414,7 +524,6 @@ SCRIPT, json_encode(strval(lang('选择后台默认配色')), JSON_UNESCAPED_UNI $right = $grid->div()->class('layui-col-xs12 layui-col-md6'); self::buildRuntimeCard($left, $context); - self::buildStorageCard($left, $context); if (!empty($context['isDebug'])) { self::buildSystemInfoCard($left, $context); } @@ -443,40 +552,6 @@ SCRIPT, json_encode(strval(lang('选择后台默认配色')), JSON_UNESCAPED_UNI }); } - /** - * @param array $context - */ - private static function buildStorageCard(PageNode $parent, array $context): void - { - $storage = is_array($context['storage'] ?? null) ? $context['storage'] : []; - $storageName = strval($context['storageName'] ?? 'local'); - $storageDriver = strval($context['storageDriver'] ?? 'local'); - $storageEditable = !empty($context['storageEditable']); - - PageModules::card($parent, ['title' => '存储中心', 'class' => 'layui-card mb15'], function (PageNode $body) use ($storage, $storageName, $storageDriver, $storageEditable) { - if ($storageEditable) { - PageModules::buttonGroup($body, [ - ['label' => '进入存储中心', 'url' => sysuri('system/config/storage'), 'data_key' => 'data-open', 'class' => 'layui-btn layui-btn-sm layui-btn-active'], - ['label' => "配置当前驱动", 'url' => sysuri('system/config/storage') . '?type=' . $storageDriver, 'data_key' => 'data-open', 'class' => 'layui-btn layui-btn-sm layui-btn-primary'], - ]); - } else { - PageModules::buttonGroup($body, [ - ['label' => BuilderLang::format('当前驱动:%s', [BuilderLang::text($storageName)]), 'class' => 'layui-btn layui-btn-sm layui-btn-active'], - ]); - } - - PageModules::kvGrid($body, [ - ['label' => '当前默认驱动', 'value' => $storageName], - ['label' => '命名策略', 'value' => strval($storage['naming_rule'] ?? 'xmd5')], - ['label' => '链接策略', 'value' => strval($storage['link_mode'] ?? 'none')], - ['label' => '允许类型', 'value' => strval($storage['allowed_extensions_text'] ?? '-')], - ]); - PageModules::paragraphs($body, [ - '上传驱动、命名规则、外链输出与文件管理统一由 System 收口。', - ]); - }); - } - /** * @param array $context */ @@ -507,6 +582,14 @@ SCRIPT, json_encode(strval(lang('选择后台默认配色')), JSON_UNESCAPED_UNI $site = is_array($context['site'] ?? null) ? $context['site'] : []; PageModules::card($parent, ['title' => '系统参数', 'class' => 'layui-card mb15'], function (PageNode $body) use ($site) { + $body->html(<<<'HTML' + +HTML); PageModules::readonlyFields($body, [ [ 'label' => '网站名称', @@ -550,7 +633,7 @@ SCRIPT, json_encode(strval(lang('选择后台默认配色')), JSON_UNESCAPED_UNI 'copy' => strval($site['copyright'] ?? ''), 'help' => '显示在登录页底部,通常用于版权声明和品牌主体信息。', ], - ]); + ], ['class' => 'layui-row layui-col-space15 system-site-fields', 'item_class' => 'layui-col-xs4 system-site-field']); }); } diff --git a/plugin/think-plugs-system/src/service/ConfigService.php b/plugin/think-plugs-system/src/service/ConfigService.php index 44a64c54a..c456c216e 100644 --- a/plugin/think-plugs-system/src/service/ConfigService.php +++ b/plugin/think-plugs-system/src/service/ConfigService.php @@ -26,15 +26,9 @@ class ConfigService extends Service */ public static function buildIndexContext(array $themes = []): array { - StorageConfig::initialize(); - $site = self::getSiteConfig($themes); $security = self::getSecurityConfig(); $runtime = self::getRuntimeConfig(); - $storage = self::maskStorageViewData(StorageConfig::viewData()); - $files = Storage::types(); - $storageDriver = strtolower((string)StorageConfig::global('default_driver', 'local')); - $storageName = strval($files[$storageDriver] ?? $storageDriver); $framework = AppService::getPluginLibrarys('topthink/framework'); $thinkadmin = AppService::getPluginLibrarys('zoujingli/think-library'); $showErrorMessage = ''; @@ -59,11 +53,6 @@ class ConfigService extends Service 'site' => $site, 'security' => $security, 'runtime' => $runtime, - 'storage' => $storage, - 'files' => $files, - 'storageDriver' => $storageDriver, - 'storageName' => $storageName, - 'storageEditable' => self::canManageStorage(), 'pluginCenter' => $pluginCenter, 'issuper' => AuthService::isSuper(), 'appDebug' => app()->isDebug(), diff --git a/plugin/think-plugs-system/tests/ConfigPageRenderTest.php b/plugin/think-plugs-system/tests/ConfigPageRenderTest.php index 903265028..e8c980f7a 100644 --- a/plugin/think-plugs-system/tests/ConfigPageRenderTest.php +++ b/plugin/think-plugs-system/tests/ConfigPageRenderTest.php @@ -43,14 +43,19 @@ class ConfigPageRenderTest extends SqliteIntegrationTestCase $html = $this->callPageHtml('index'); - $this->assertStringContainsString('统一管理运行模式、存储中心与系统基础参数', $html); + $this->assertStringContainsString('统一管理运行模式与系统基础参数', $html); $this->assertStringContainsString('站点名称', $html); $this->assertStringContainsString('插件中心', $html); $this->assertStringContainsString('菜单入口策略', $html); + $this->assertStringContainsString('system-site-fields', $html); $this->assertStringContainsString('page-builder-schema', $html); $this->assertStringContainsString('系统参数配置', $html); $this->assertStringNotContainsString('插件应用', $html); $this->assertStringNotContainsString('插件标识', $html); + $this->assertStringNotContainsString('默认存储驱动', $html); + $this->assertStringNotContainsString('存储中心', $html); + $this->assertStringNotContainsString('进入存储中心', $html); + $this->assertStringNotContainsString('配置当前驱动', $html); } public function testSystemRendersGroupedConfigurationSections(): void @@ -64,6 +69,9 @@ class ConfigPageRenderTest extends SqliteIntegrationTestCase $this->assertStringContainsString('保存修改', $html); $this->assertStringContainsString('取消修改', $html); $this->assertStringContainsString('class="system-config-form layui-form"', $html); + $this->assertStringContainsString('SystemConfigFormStyle', $html); + $this->assertStringContainsString('system-config-cols-2', $html); + $this->assertStringContainsString('system-config-cols-3', $html); $this->assertStringContainsString('data-builder-scope="page"', $html); $this->assertStringContainsString('站点品牌信息', $html); $this->assertStringContainsString('data-target-submit', $html); @@ -92,6 +100,7 @@ class ConfigPageRenderTest extends SqliteIntegrationTestCase $this->assertStringContainsString('存储引擎', $html); $this->assertStringContainsString('page-builder-schema', $html); $this->assertStringContainsString('当前默认驱动', $html); + $this->assertStringContainsString('storage-overview-kv', $html); } public function testStorageDriverFormRendersWithBuilder(): void