135 文件 19,211 处自动修复:空格→Tab 缩进、括号间距、 函数声明空格、前置自增、尾逗号等纯格式化改动。 零逻辑变更,php -l + token 级对比验证通过。 新增 phpcs.xml.dist / phpstan.neon.dist 项目配置。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
211 lines
4.3 KiB
PHP
211 lines
4.3 KiB
PHP
<?php
|
|
/**
|
|
* Admin assets loader.
|
|
*
|
|
* @package WPMind\Admin
|
|
* @since 3.3.0
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace WPMind\Admin;
|
|
|
|
/**
|
|
* Class AdminAssets
|
|
*/
|
|
final class AdminAssets {
|
|
|
|
/**
|
|
* Singleton instance.
|
|
*
|
|
* @var AdminAssets|null
|
|
*/
|
|
private static ?AdminAssets $instance = null;
|
|
|
|
/**
|
|
* Get singleton instance.
|
|
*
|
|
* @return AdminAssets
|
|
*/
|
|
public static function instance(): AdminAssets {
|
|
if ( null === self::$instance ) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Constructor.
|
|
*/
|
|
private function __construct() {}
|
|
|
|
/**
|
|
* 加载管理后台资源
|
|
*
|
|
* @param string $hook_suffix 当前页面钩子后缀
|
|
* @since 1.1.0
|
|
*/
|
|
public function enqueue_admin_assets( string $hook_suffix ): void {
|
|
// 一级菜单的 hook suffix 是 toplevel_page_{menu_slug}
|
|
if ( 'toplevel_page_wpmind' !== $hook_suffix ) {
|
|
return;
|
|
}
|
|
|
|
// Remixicon 图标库(本地打包)
|
|
wp_enqueue_style(
|
|
'remixicon',
|
|
WPMIND_PLUGIN_URL . 'assets/vendor/remixicon/remixicon.css',
|
|
[],
|
|
'4.9.1'
|
|
);
|
|
|
|
wp_enqueue_style(
|
|
'wpmind-admin',
|
|
WPMIND_PLUGIN_URL . 'assets/css/admin.css',
|
|
[ 'remixicon' ],
|
|
WPMIND_VERSION
|
|
);
|
|
|
|
wp_enqueue_style(
|
|
'wpmind-modules',
|
|
WPMIND_PLUGIN_URL . 'assets/css/modules.css',
|
|
[ 'wpmind-admin' ],
|
|
WPMIND_VERSION
|
|
);
|
|
|
|
wp_enqueue_style(
|
|
'wpmind-overview',
|
|
WPMIND_PLUGIN_URL . 'assets/css/overview.css',
|
|
[ 'wpmind-admin' ],
|
|
WPMIND_VERSION
|
|
);
|
|
|
|
wp_enqueue_style(
|
|
'wpmind-panels',
|
|
WPMIND_PLUGIN_URL . 'assets/css/panels.css',
|
|
[ 'wpmind-admin' ],
|
|
WPMIND_VERSION
|
|
);
|
|
|
|
wp_enqueue_style(
|
|
'wpmind-routing',
|
|
WPMIND_PLUGIN_URL . 'assets/css/pages/routing.css',
|
|
[ 'wpmind-panels' ],
|
|
WPMIND_VERSION
|
|
);
|
|
|
|
wp_enqueue_style(
|
|
'wpmind-module-layout',
|
|
WPMIND_PLUGIN_URL . 'assets/css/components/module-layout.css',
|
|
[ 'wpmind-admin' ],
|
|
WPMIND_VERSION
|
|
);
|
|
|
|
wp_enqueue_style(
|
|
'wpmind-responsive',
|
|
WPMIND_PLUGIN_URL . 'assets/css/responsive.css',
|
|
[ 'wpmind-panels', 'wpmind-routing' ],
|
|
WPMIND_VERSION
|
|
);
|
|
|
|
// Chart.js 图表库(本地打包,无外部 CDN 依赖)
|
|
wp_register_script(
|
|
'chartjs',
|
|
WPMIND_PLUGIN_URL . 'assets/js/vendor/chartjs/chart.umd.min.js',
|
|
[],
|
|
'4.5.0',
|
|
true
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'wpmind-admin-ui',
|
|
WPMIND_PLUGIN_URL . 'assets/js/admin-ui.js',
|
|
[ 'jquery' ],
|
|
WPMIND_VERSION,
|
|
true
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'wpmind-admin-boot',
|
|
WPMIND_PLUGIN_URL . 'assets/js/admin-boot.js',
|
|
[ 'wpmind-admin-ui' ],
|
|
WPMIND_VERSION,
|
|
true
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'wpmind-admin-endpoints',
|
|
WPMIND_PLUGIN_URL . 'assets/js/admin-endpoints.js',
|
|
[ 'wpmind-admin-boot' ],
|
|
WPMIND_VERSION,
|
|
true
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'wpmind-admin-routing',
|
|
WPMIND_PLUGIN_URL . 'assets/js/admin-routing.js',
|
|
[ 'wpmind-admin-boot', 'jquery-ui-sortable' ],
|
|
WPMIND_VERSION,
|
|
true
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'wpmind-admin-analytics',
|
|
WPMIND_PLUGIN_URL . 'assets/js/admin-analytics.js',
|
|
[ 'wpmind-admin-boot', 'chartjs' ],
|
|
WPMIND_VERSION,
|
|
true
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'wpmind-admin-budget',
|
|
WPMIND_PLUGIN_URL . 'assets/js/admin-budget.js',
|
|
[ 'wpmind-admin-boot' ],
|
|
WPMIND_VERSION,
|
|
true
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'wpmind-admin-geo',
|
|
WPMIND_PLUGIN_URL . 'assets/js/admin-geo.js',
|
|
[ 'wpmind-admin-boot' ],
|
|
WPMIND_VERSION,
|
|
true
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'wpmind-admin-modules',
|
|
WPMIND_PLUGIN_URL . 'assets/js/admin-modules.js',
|
|
[ 'wpmind-admin-boot' ],
|
|
WPMIND_VERSION,
|
|
true
|
|
);
|
|
|
|
// 完整的国际化字符串
|
|
wp_localize_script(
|
|
'wpmind-admin-boot',
|
|
'wpmindL10n',
|
|
[
|
|
'testSuccess' => __( '连接成功!', 'wpmind' ),
|
|
'testFailed' => __( '连接失败:', 'wpmind' ),
|
|
'testing' => __( '测试中...', 'wpmind' ),
|
|
'enabled' => __( '已启用', 'wpmind' ),
|
|
'apiKeyRequired' => __( '请为已启用的服务填写 API Key', 'wpmind' ),
|
|
'apiKeySet' => __( '已设置', 'wpmind' ),
|
|
'apiKeyCleared' => __( 'API Key 将被清除', 'wpmind' ),
|
|
]
|
|
);
|
|
|
|
// 为 AJAX 添加数据
|
|
wp_localize_script(
|
|
'wpmind-admin-boot',
|
|
'wpmindData',
|
|
[
|
|
'nonce' => wp_create_nonce( 'wpmind_ajax' ),
|
|
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
|
'version' => WPMIND_VERSION,
|
|
'debug' => defined( 'WP_DEBUG' ) && WP_DEBUG,
|
|
]
|
|
);
|
|
}
|
|
}
|