refactor: rename the theme brand and every identifier from AKSRT to Jio

Full-project rename. `git grep -i aksrt` is now empty apart from the
DBMigrator 3.3.0 changelog note that documents the rename itself.

Code identifiers
- PHP namespace AKSRT\ -> Jio\ (composer PSR-4 + 378 declarations)
- global constants AKSRT_* -> JIO_* (VERSION/DIR/URI, PAY_TYPE_*, CAPTCHA_*)
- procedural functions, hooks, options, meta keys, table names,
  cookies, query vars, ajax actions and nonces: aksrt_ -> jio_
- text domain aksrt -> jio; Theme Name -> Jio
- JS globals: aksrtData/aksrtAdminData/... -> jioData/jioAdminData/...,
  window.AKSRTCaptcha & friends -> window.JioCaptcha, Aksrt* -> Jio*
- Vue components Aks*.vue -> Jio*.vue (15 files renamed + imports)
- CSS classes/data-attrs/custom properties: aksrt- -> jio-
- REST namespace aksrt/v1 -> jio/v1 (incl. payment gateway callbacks)

Storage layer
- DB tables {prefix}aksrt_* -> {prefix}jio_*; SCHEMA_VERSION 3.2.0 -> 3.3.0
  so dbDelta creates the new names on install
- widget id_base aksrt_widget_* -> jio_widget_*
- uninstall.php drop list rebuilt from the actual migrator tables
  (dropped 3 stale entries, added the 17 missing ones)

Removed
- hardcoded https://api.aksrt.com/version.json default update endpoint;
  get_endpoint() now reads the 「更新端点」 setting and do_check() no-ops
  when it is empty

Files renamed: inc/helpers/aksrt-*.php -> jio-*.php (54),
assets/admin/src/components/form/Aks*.vue -> Jio*.vue (15).
Build artifacts regenerated: assets/css/build, assets/js/runtime,
assets/admin/build.

Verified: audit-psr4-paths errors=0, audit-admin-contracts errors=0
(warnings=56, unchanged baseline), 813/813 widget-system tests,
44/44 phpunit, php -l clean across all PHP.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Opus 5 committed 2026-11-01 20:05:04 +08:00
1 parent 5b16bc6e15
commit 35bb96e82f
997 files changed
+28216 -28188

No files matched your search

+35 -35
View File
@@ -2,18 +2,18 @@
/**
* Per-page legacy header slider configuration.
*
* @package AKSRT
* @package Jio
*/
namespace AKSRT\Admin;
namespace Jio\Admin;
defined('ABSPATH') || exit;
final class PageConfigMetaBox {
private const META_KEY = 'page_config';
private const NONCE_ACTION = 'aksrt_page_config_save';
private const NONCE_NAME = 'aksrt_page_config_nonce';
private const NONCE_ACTION = 'jio_page_config_save';
private const NONCE_NAME = 'jio_page_config_nonce';
public static function init(): void {
add_action('add_meta_boxes_page', [self::class, 'register']);
@@ -31,13 +31,13 @@ final class PageConfigMetaBox {
}
wp_enqueue_style('wp-color-picker');
wp_enqueue_script('wp-color-picker');
wp_add_inline_script('wp-color-picker', "jQuery(function($){ $('.aksrt-page-config-color').wpColorPicker(); });");
wp_add_inline_script('wp-color-picker', "jQuery(function($){ $('.jio-page-config-color').wpColorPicker(); });");
}
public static function register(): void {
add_meta_box(
'aksrt-page-config',
__('页面配置', 'aksrt'),
'jio-page-config',
__('页面配置', 'jio'),
[self::class, 'render'],
'page',
'normal',
@@ -58,40 +58,40 @@ final class PageConfigMetaBox {
];
?>
<style>
.aksrt-page-config-grid{display:grid;grid-template-columns:220px minmax(0,1fr);gap:14px 20px;align-items:start}
.aksrt-page-config-grid>label{font-weight:600;padding-top:7px}.aksrt-page-config-grid textarea{width:100%;font-family:Consolas,monospace}
.aksrt-page-config-grid .description{margin:4px 0 0}.aksrt-page-config-wide{grid-column:1/-1}
@media(max-width:782px){.aksrt-page-config-grid{grid-template-columns:1fr}.aksrt-page-config-wide{grid-column:auto}}
.jio-page-config-grid{display:grid;grid-template-columns:220px minmax(0,1fr);gap:14px 20px;align-items:start}
.jio-page-config-grid>label{font-weight:600;padding-top:7px}.jio-page-config-grid textarea{width:100%;font-family:Consolas,monospace}
.jio-page-config-grid .description{margin:4px 0 0}.jio-page-config-wide{grid-column:1/-1}
@media(max-width:782px){.jio-page-config-grid{grid-template-columns:1fr}.jio-page-config-wide{grid-column:auto}}
</style>
<div class="aksrt-page-config-grid">
<label for="aksrt-header-slider-show"><?php esc_html_e('独立配置顶部多功能组件', 'aksrt'); ?></label>
<div class="jio-page-config-grid">
<label for="jio-header-slider-show"><?php esc_html_e('独立配置顶部多功能组件', 'jio'); ?></label>
<div>
<label><input id="aksrt-header-slider-show" type="checkbox" name="page_config[header_slider_show]" value="1" <?php checked(!empty($config['header_slider_show'])); ?>> <?php esc_html_e('为当前页面使用独立内容和显示规则', 'aksrt'); ?></label>
<p class="description"><?php esc_html_e('仅当主题设置的“顶部多功能组件”已勾选当前页面所属类型时生效;此处不能单独启用组件。', 'aksrt'); ?></p>
<label><input id="jio-header-slider-show" type="checkbox" name="page_config[header_slider_show]" value="1" <?php checked(!empty($config['header_slider_show'])); ?>> <?php esc_html_e('为当前页面使用独立内容和显示规则', 'jio'); ?></label>
<p class="description"><?php esc_html_e('仅当主题设置的“顶部多功能组件”已勾选当前页面所属类型时生效;此处不能单独启用组件。', 'jio'); ?></p>
</div>
<label><?php esc_html_e('显示规则', 'aksrt'); ?></label>
<label><?php esc_html_e('显示规则', 'jio'); ?></label>
<div>
<?php foreach (['' => __('全部显示', 'aksrt'), 'only_pc' => __('仅在 PC 端显示', 'aksrt'), 'only_sm' => __('仅在移动端显示', 'aksrt')] as $value => $label) : ?>
<?php foreach (['' => __('全部显示', 'jio'), 'only_pc' => __('仅在 PC 端显示', 'jio'), 'only_sm' => __('仅在移动端显示', 'jio')] as $value => $label) : ?>
<label style="margin-right:16px"><input type="radio" name="page_config[header_slider_show_type]" value="<?php echo esc_attr($value); ?>" <?php checked($show_type, $value); ?>> <?php echo esc_html($label); ?></label>
<?php endforeach; ?>
</div>
<label for="aksrt-header-slider-nav-color"><?php esc_html_e('导航栏文字颜色', 'aksrt'); ?></label>
<div><input id="aksrt-header-slider-nav-color" class="aksrt-page-config-color" type="text" name="page_config[header_slider_nav_color]" value="<?php echo esc_attr((string) ($config['header_slider_nav_color'] ?? '#ffffff')); ?>" data-default-color="#ffffff"></div>
<label for="jio-header-slider-nav-color"><?php esc_html_e('导航栏文字颜色', 'jio'); ?></label>
<div><input id="jio-header-slider-nav-color" class="jio-page-config-color" type="text" name="page_config[header_slider_nav_color]" value="<?php echo esc_attr((string) ($config['header_slider_nav_color'] ?? '#ffffff')); ?>" data-default-color="#ffffff"></div>
<?php self::render_json_field('header_slider', __('背景内容', 'aksrt'), $config['header_slider'] ?? self::slide_defaults(), 16); ?>
<?php self::render_json_field('header_slider_option', __('背景显示设置', 'aksrt'), $config['header_slider_option'] ?? self::slider_defaults(), 12); ?>
<?php self::render_json_field('header_slider', __('背景内容', 'jio'), $config['header_slider'] ?? self::slide_defaults(), 16); ?>
<?php self::render_json_field('header_slider_option', __('背景显示设置', 'jio'), $config['header_slider_option'] ?? self::slider_defaults(), 12); ?>
<label><?php esc_html_e('叠加搜索组件', 'aksrt'); ?></label>
<label><?php esc_html_e('叠加搜索组件', 'jio'); ?></label>
<div><?php self::render_devices('header_slider_search_s', $devices['header_slider_search_s']); ?></div>
<?php self::render_json_field('header_slider_search_option', __('搜索组件设置', 'aksrt'), $config['header_slider_search_option'] ?? self::search_defaults(), 12); ?>
<?php self::render_json_field('header_slider_search_option', __('搜索组件设置', 'jio'), $config['header_slider_search_option'] ?? self::search_defaults(), 12); ?>
<label><?php esc_html_e('叠加封面卡片组件', 'aksrt'); ?></label>
<label><?php esc_html_e('叠加封面卡片组件', 'jio'); ?></label>
<div><?php self::render_devices('header_slider_card_s', $devices['header_slider_card_s']); ?></div>
<?php self::render_json_field('header_slider_card_option', __('图标卡片设置', 'aksrt'), $config['header_slider_card_option'] ?? self::card_defaults(), 16); ?>
<?php self::render_json_field('header_slider_card_option', __('图标卡片设置', 'jio'), $config['header_slider_card_option'] ?? self::card_defaults(), 16); ?>
</div>
<p class="description"><?php esc_html_e('复杂字段使用参考主题原始数组结构的 JSON;保存后统一写入 page_config 序列化元数据,不读取任何旧字段。', 'aksrt'); ?></p>
<p class="description"><?php esc_html_e('复杂字段使用参考主题原始数组结构的 JSON;保存后统一写入 page_config 序列化元数据,不读取任何旧字段。', 'jio'); ?></p>
<?php
}
@@ -99,14 +99,14 @@ final class PageConfigMetaBox {
private static function render_json_field(string $key, string $label, $value, int $rows): void {
$json = wp_json_encode(is_array($value) ? $value : [], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
?>
<label for="aksrt-<?php echo esc_attr($key); ?>"><?php echo esc_html($label); ?></label>
<div><textarea id="aksrt-<?php echo esc_attr($key); ?>" name="page_config[<?php echo esc_attr($key); ?>]" rows="<?php echo (int) $rows; ?>"><?php echo esc_textarea((string) $json); ?></textarea></div>
<label for="jio-<?php echo esc_attr($key); ?>"><?php echo esc_html($label); ?></label>
<div><textarea id="jio-<?php echo esc_attr($key); ?>" name="page_config[<?php echo esc_attr($key); ?>]" rows="<?php echo (int) $rows; ?>"><?php echo esc_textarea((string) $json); ?></textarea></div>
<?php
}
/** @param list<string> $selected */
private static function render_devices(string $key, array $selected): void {
foreach (['pc_s' => __('PC 端显示', 'aksrt'), 'm_s' => __('移动端显示', 'aksrt')] as $value => $label) {
foreach (['pc_s' => __('PC 端显示', 'jio'), 'm_s' => __('移动端显示', 'jio')] as $value => $label) {
printf(
'<label style="margin-right:16px"><input type="checkbox" name="page_config[%1$s][]" value="%2$s" %3$s> %4$s</label>',
esc_attr($key),
@@ -136,7 +136,7 @@ final class PageConfigMetaBox {
$config = [
'header_slider_show' => !empty($raw['header_slider_show']),
'header_slider_show_type' => self::enum((string) ($raw['header_slider_show_type'] ?? ''), ['', 'only_pc', 'only_sm']),
'header_slider_nav_color' => \AKSRT\Core\Color::sanitize((string) ($raw['header_slider_nav_color'] ?? '')) ?: '#ffffff',
'header_slider_nav_color' => \Jio\Core\Color::sanitize((string) ($raw['header_slider_nav_color'] ?? '')) ?: '#ffffff',
'header_slider' => self::sanitize_slides(self::decode_json($raw['header_slider'] ?? '')),
'header_slider_option' => self::sanitize_slider_options(self::decode_json($raw['header_slider_option'] ?? '')),
'header_slider_search_s' => self::sanitize_devices($raw['header_slider_search_s'] ?? []),
@@ -266,12 +266,12 @@ final class PageConfigMetaBox {
$cards[] = [
// legacy echoes card title/desc raw (admin authors <badge> etc.);
// wp_kses_post() would strip the custom badge element.
'title' => aksrt_icon_card_kses((string) ($card['title'] ?? '')),
'desc' => aksrt_icon_card_kses((string) ($card['desc'] ?? '')),
'title' => jio_icon_card_kses((string) ($card['title'] ?? '')),
'desc' => jio_icon_card_kses((string) ($card['desc'] ?? '')),
// Icon picker values may carry an inline "customsvg-<svg>" payload;
// sanitize_text_field would strip it down to a bare prefix.
'icon' => function_exists('aksrt_sanitize_icon_value')
? aksrt_sanitize_icon_value((string) ($card['icon'] ?? ''))
'icon' => function_exists('jio_sanitize_icon_value')
? jio_sanitize_icon_value((string) ($card['icon'] ?? ''))
: sanitize_text_field((string) ($card['icon'] ?? '')),
'customize_icon' => wp_kses_post((string) ($card['customize_icon'] ?? '')),
'icon_class' => sanitize_text_field((string) ($card['icon_class'] ?? '')),
@@ -296,7 +296,7 @@ final class PageConfigMetaBox {
/** @return list<array<string,mixed>> */
private static function slide_defaults(): array {
$base = defined('AKSRT_URI') ? trailingslashit(AKSRT_URI) . 'assets/img/' : '';
$base = defined('JIO_URI') ? trailingslashit(JIO_URI) . 'assets/img/' : '';
$slides = [];
foreach (['slider-bg.jpg', 'user_t.jpg'] as $image) {
$slides[] = [