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:
1 parent
5b16bc6e15
commit
35bb96e82f
997 files changed
+28216
-28188
No files matched your search
@@ -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[] = [
|
||||
|
||||
Reference in new issue
Block a user