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

@@ -59,7 +59,7 @@ class WP_Query {
}
}
namespace AKSRT\Settings {
namespace Jio\Settings {
final class Settings {
public static function get_post_list_style_settings(): array {
return $GLOBALS['tab_fixture_global_style'] ?? [];
@@ -110,7 +110,7 @@ namespace {
function wp_strip_all_tags($value): string { return trim(strip_tags((string) $value)); }
function wp_trim_words($value, int $num_words = 55, string $more = '...'): string { return implode(' ', array_slice(preg_split('/\s+/', trim((string) $value)) ?: [], 0, $num_words)) . $more; }
function wp_is_mobile(): bool { return (bool) $GLOBALS['tab_fixture_mobile']; }
function aksrt_is_show_sidebar(): bool { return true; }
function jio_is_show_sidebar(): bool { return true; }
function is_category(): bool { return false; }
function is_search(): bool { return false; }
function is_home(): bool { return false; }
@@ -130,7 +130,7 @@ namespace {
}
function get_userdata(int $id): WP_User { return new WP_User($id); }
function get_avatar_url(int $id, array $args = []): string { unset($args); return 'https://example.test/avatar/' . $id . '.png'; }
function aksrt_get_avatar_box($subject, string $class = 'avatar-img', bool $link = true, bool $vip = true): string {
function jio_get_avatar_box($subject, string $class = 'avatar-img', bool $link = true, bool $vip = true): string {
$user_id = is_numeric($subject) ? (int) $subject : 0;
$GLOBALS['tab_fixture_avatar_calls'][] = ['user_id' => $user_id, 'class' => $class, 'link' => $link, 'vip' => $vip];
$inner = '<span class="' . esc_attr($class) . '"><img class="avatar" src="https://example.test/avatar/' . $user_id . '.png" alt=""><img class="avatar-badge" src="https://example.test/vip/' . $user_id . '.svg" alt="VIP"></span>';
@@ -153,24 +153,24 @@ namespace {
function get_comments_link(int $id = 0): string { return 'https://example.test/post/' . $id . '#comments'; }
function get_post_type(int $id = 0): string { unset($id); return 'post'; }
function is_sticky(int $id = 0): bool { unset($id); return false; }
function aksrt_resource_card_badge_text(int $id): string { return isset($GLOBALS['tab_fixture_pay_meta'][$id]) ? '旧版资源标签' : ''; }
function aksrt_get_pay_meta($post = null): array {
function jio_resource_card_badge_text(int $id): string { return isset($GLOBALS['tab_fixture_pay_meta'][$id]) ? '旧版资源标签' : ''; }
function jio_get_pay_meta($post = null): array {
$post_id = $post instanceof WP_Post ? $post->ID : (int) $post;
return $GLOBALS['tab_fixture_pay_meta'][$post_id] ?? ['pay_type' => 'no'];
}
function aksrt_get_pay_types(): array { return ['reading' => '付费阅读', 'download' => '付费下载', 'gallery' => '付费图片', 'video' => '付费视频']; }
function aksrt_format_price($price): string {
function jio_get_pay_types(): array { return ['reading' => '付费阅读', 'download' => '付费下载', 'gallery' => '付费图片', 'video' => '付费视频']; }
function jio_format_price($price): string {
$value = number_format((float) $price, 2, '.', '');
return rtrim(rtrim($value, '0'), '.') ?: '0';
}
function aksrt_get_post_views(int $id): int { return $id * 10; }
function aksrt_get_post_likes(int $id): int { return $id * 2; }
function aksrt_format_number(int $number): string { return (string) $number; }
function aksrt_get_lazy_thumb(string $size = ''): string { unset($size); return 'https://example.test/placeholder.jpg'; }
function aksrt_get_lazy_attr(string $key, string $url, string $class = '', string $lazy = ''): string { unset($key, $lazy); return ' class="' . esc_attr($class) . '" src="' . esc_url($url) . '"'; }
function jio_get_post_views(int $id): int { return $id * 10; }
function jio_get_post_likes(int $id): int { return $id * 2; }
function jio_format_number(int $number): string { return (string) $number; }
function jio_get_lazy_thumb(string $size = ''): string { unset($size); return 'https://example.test/placeholder.jpg'; }
function jio_get_lazy_attr(string $key, string $url, string $class = '', string $lazy = ''): string { unset($key, $lazy); return ' class="' . esc_attr($class) . '" src="' . esc_url($url) . '"'; }
function wp_reset_postdata(): void { $GLOBALS['tab_fixture_current_post'] = null; $GLOBALS['post'] = null; }
function aksrt_widget_ajax_null(string $message = ''): string { return '<div class="aksrt-widget__empty">' . esc_html($message) . '</div>'; }
function aksrt_render_placeholder(string $style, int $count): string { return '<div data-placeholder="' . esc_attr($style) . ':' . $count . '"></div>'; }
function jio_widget_ajax_null(string $message = ''): string { return '<div class="jio-widget__empty">' . esc_html($message) . '</div>'; }
function jio_render_placeholder(string $style, int $count): string { return '<div data-placeholder="' . esc_attr($style) . ':' . $count . '"></div>'; }
function get_template_directory(): string { return dirname(__DIR__, 2); }
function get_template_directory_uri(): string { return 'https://example.test/theme'; }
function rest_url(string $path): string { return 'https://example.test/wp-json/' . $path; }
@@ -182,7 +182,7 @@ namespace {
function wp_json_encode($value): string { return json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR); }
require dirname(__DIR__, 2) . '/vendor/autoload.php';
require dirname(__DIR__, 2) . '/inc/helpers/aksrt-icons.php';
require dirname(__DIR__, 2) . '/inc/helpers/jio-icons.php';
require dirname(__DIR__, 2) . '/inc/helpers/posts-renderer/config.php';
require dirname(__DIR__, 2) . '/inc/helpers/posts-renderer/post-data.php';
require dirname(__DIR__, 2) . '/inc/helpers/posts-renderer/markup.php';
@@ -224,70 +224,70 @@ namespace {
if ($name === 'invalid') $instance['style'] = 'unknown';
if ($name === 'default' || $name === 'invalid') {
$cases['raw_' . $name] = [
'tab_markup' => \AKSRT\WidgetSystem\Renderers\ContentRenderer::render('tab_posts', $instance, ['widget_id' => 'aksrt_widget_tab_posts-4']),
'first' => \AKSRT\WidgetSystem\PostRenderer::payload($instance, 'tab_posts', 1, '0')['html'],
'tab_markup' => \Jio\WidgetSystem\Renderers\ContentRenderer::render('tab_posts', $instance, ['widget_id' => 'jio_widget_tab_posts-4']),
'first' => \Jio\WidgetSystem\PostRenderer::payload($instance, 'tab_posts', 1, '0')['html'],
];
}
$instance = \AKSRT\WidgetSystem\FieldSchema::normalize(\AKSRT\WidgetSystem\WidgetSchemas::for('tab_posts'), $instance);
$instance = \Jio\WidgetSystem\FieldSchema::normalize(\Jio\WidgetSystem\WidgetSchemas::for('tab_posts'), $instance);
if ($name === 'list') $list_instance = $instance;
$avatar_start = count($GLOBALS['tab_fixture_avatar_calls']);
$first_page = \AKSRT\WidgetSystem\PostRenderer::payload($instance, 'tab_posts', 1, '0');
$second_page = \AKSRT\WidgetSystem\PostRenderer::payload($instance, 'tab_posts', 2, '0');
$first_page = \Jio\WidgetSystem\PostRenderer::payload($instance, 'tab_posts', 1, '0');
$second_page = \Jio\WidgetSystem\PostRenderer::payload($instance, 'tab_posts', 2, '0');
$cases[$name] = [
'instance_style' => $instance['style'],
'tab_markup' => \AKSRT\WidgetSystem\Renderers\ContentRenderer::render('tab_posts', $instance, ['widget_id' => 'aksrt_widget_tab_posts-4']),
'tab_markup' => \Jio\WidgetSystem\Renderers\ContentRenderer::render('tab_posts', $instance, ['widget_id' => 'jio_widget_tab_posts-4']),
'first' => $first_page['html'],
'second' => $second_page['html'],
'pagination' => $first_page['paginate_html'],
'last_pagination' => \AKSRT\WidgetSystem\PostRenderer::payload($instance, 'tab_posts', 9, '0')['paginate_html'],
'last_pagination' => \Jio\WidgetSystem\PostRenderer::payload($instance, 'tab_posts', 9, '0')['paginate_html'],
'avatar_calls' => array_slice($GLOBALS['tab_fixture_avatar_calls'], $avatar_start),
];
}
$mini_instance = ['style' => 'mini', 'mini_opt' => ['show_thumb', 'show_number', 'show_meta'], 'count' => 4, 'paginate' => 'number', 'tabs' => $tabs];
$mini_instance = \AKSRT\WidgetSystem\FieldSchema::normalize(\AKSRT\WidgetSystem\WidgetSchemas::for('tab_posts'), $mini_instance);
$mini_instance = \Jio\WidgetSystem\FieldSchema::normalize(\Jio\WidgetSystem\WidgetSchemas::for('tab_posts'), $mini_instance);
$avatar_start = count($GLOBALS['tab_fixture_avatar_calls']);
$mini_first = \AKSRT\WidgetSystem\PostRenderer::payload($mini_instance, 'tab_posts', 1, '0')['html'];
$mini_second = \AKSRT\WidgetSystem\PostRenderer::payload($mini_instance, 'tab_posts', 2, '0')['html'];
$mini_first = \Jio\WidgetSystem\PostRenderer::payload($mini_instance, 'tab_posts', 1, '0')['html'];
$mini_second = \Jio\WidgetSystem\PostRenderer::payload($mini_instance, 'tab_posts', 2, '0')['html'];
$cases['mini_all_options'] = [
'first' => $mini_first,
'second' => $mini_second,
'avatar_calls' => array_slice($GLOBALS['tab_fixture_avatar_calls'], $avatar_start),
];
$cases['no_pagination_page'] = \AKSRT\WidgetSystem\PostRenderer::payload(array_merge($mini_instance, ['paginate' => '']), 'tab_posts', 2, '0');
$cases['no_pagination_page'] = \Jio\WidgetSystem\PostRenderer::payload(array_merge($mini_instance, ['paginate' => '']), 'tab_posts', 2, '0');
foreach (['list', 'card', 'mini'] as $posts_style) {
$posts_definition = \AKSRT\WidgetSystem\WidgetRegistry::get('posts');
$posts_definition = \Jio\WidgetSystem\WidgetRegistry::get('posts');
foreach (['detail', 'ajax'] as $load_mode) {
$posts_instance = $posts_definition->normalize(['style' => $posts_style, 'load_mode' => $load_mode, 'count' => 4, 'paginate' => 'number', 'title' => '文章列表']);
$cases['posts_' . $posts_style . '_' . $load_mode] = \AKSRT\WidgetSystem\Renderers\ContentRenderer::render('posts', $posts_instance, ['widget_id' => 'aksrt_widget_posts-3']);
$cases['posts_' . $posts_style . '_' . $load_mode] = \Jio\WidgetSystem\Renderers\ContentRenderer::render('posts', $posts_instance, ['widget_id' => 'jio_widget_posts-3']);
}
}
$GLOBALS['tab_fixture_global_style']['post_list_author'] = false;
$mini_time_instance = ['style' => 'mini', 'mini_opt' => ['show_meta'], 'count' => 4, 'paginate' => '', 'tabs' => $tabs];
$mini_time_instance = \AKSRT\WidgetSystem\FieldSchema::normalize(\AKSRT\WidgetSystem\WidgetSchemas::for('tab_posts'), $mini_time_instance);
$cases['mini_time_source'] = ['html' => \AKSRT\WidgetSystem\PostRenderer::payload($mini_time_instance, 'tab_posts', 1, '0')['html']];
$mini_time_instance = \Jio\WidgetSystem\FieldSchema::normalize(\Jio\WidgetSystem\WidgetSchemas::for('tab_posts'), $mini_time_instance);
$cases['mini_time_source'] = ['html' => \Jio\WidgetSystem\PostRenderer::payload($mini_time_instance, 'tab_posts', 1, '0')['html']];
$GLOBALS['tab_fixture_global_style']['post_list_author'] = true;
$ajax_instance = $instance;
$ajax_instance['style'] = 'mini';
$ajax_instance['paginate'] = 'ajax';
$ajax_instance = \AKSRT\WidgetSystem\FieldSchema::normalize(\AKSRT\WidgetSystem\WidgetSchemas::for('tab_posts'), $ajax_instance);
$ajax_instance = \Jio\WidgetSystem\FieldSchema::normalize(\Jio\WidgetSystem\WidgetSchemas::for('tab_posts'), $ajax_instance);
$cases['ajax_pagination'] = [
'first' => \AKSRT\WidgetSystem\PostRenderer::payload($ajax_instance, 'tab_posts', 1, '0')['paginate_html'],
'last' => \AKSRT\WidgetSystem\PostRenderer::payload($ajax_instance, 'tab_posts', 9, '0')['paginate_html'],
'first' => \Jio\WidgetSystem\PostRenderer::payload($ajax_instance, 'tab_posts', 1, '0')['paginate_html'],
'last' => \Jio\WidgetSystem\PostRenderer::payload($ajax_instance, 'tab_posts', 9, '0')['paginate_html'],
];
$GLOBALS['tab_fixture_mobile'] = true;
$cases['mobile_pagination'] = [
'middle' => \AKSRT\WidgetSystem\PostRenderer::payload($list_instance, 'tab_posts', 5, '0')['paginate_html'],
'last' => \AKSRT\WidgetSystem\PostRenderer::payload($list_instance, 'tab_posts', 9, '0')['paginate_html'],
'middle' => \Jio\WidgetSystem\PostRenderer::payload($list_instance, 'tab_posts', 5, '0')['paginate_html'],
'last' => \Jio\WidgetSystem\PostRenderer::payload($list_instance, 'tab_posts', 9, '0')['paginate_html'],
];
$GLOBALS['tab_fixture_mobile'] = false;
$cases['context_margins'] = [
'implicit' => \aksrt_renderer_config(['type' => 'list'])['no_margin'],
'explicit_false' => \aksrt_renderer_config(['type' => 'list', 'no_margin' => false])['no_margin'],
'implicit' => \jio_renderer_config(['type' => 'list'])['no_margin'],
'explicit_false' => \jio_renderer_config(['type' => 'list', 'no_margin' => false])['no_margin'],
];
$definition = \AKSRT\WidgetSystem\WidgetRegistry::get('tab_posts');
$widget = new \AKSRT\WidgetSystem\SchemaWidget($definition);
$widget->id = 'aksrt_widget_tab_posts-4';
$wrapper_instance = \AKSRT\WidgetSystem\FieldSchema::normalize($definition->fields(), [
$definition = \Jio\WidgetSystem\WidgetRegistry::get('tab_posts');
$widget = new \Jio\WidgetSystem\SchemaWidget($definition);
$widget->id = 'jio_widget_tab_posts-4';
$wrapper_instance = \Jio\WidgetSystem\FieldSchema::normalize($definition->fields(), [
'title' => '参考标题',
'layout_pin_pc' => ['top' => 8, 'right' => 6, 'bottom' => 18, 'left' => 4],
'layout_pin_m' => ['top' => 3, 'right' => 2, 'bottom' => 10, 'left' => 2],
@@ -298,25 +298,25 @@ namespace {
'tabs' => $tabs,
]);
ob_start();
\AKSRT\WidgetSystem\FrontendRenderer::render($definition, ['before_widget' => '<aside>', 'after_widget' => '</aside>'], $wrapper_instance, $widget);
\Jio\WidgetSystem\FrontendRenderer::render($definition, ['before_widget' => '<aside>', 'after_widget' => '</aside>'], $wrapper_instance, $widget);
$cases['frontend_wrapper'] = (string) ob_get_clean();
$paid_instance = \AKSRT\WidgetSystem\FieldSchema::normalize(\AKSRT\WidgetSystem\WidgetSchemas::for('tab_posts'), [
$paid_instance = \Jio\WidgetSystem\FieldSchema::normalize(\Jio\WidgetSystem\WidgetSchemas::for('tab_posts'), [
'style' => 'mini', 'mini_opt' => ['show_meta'], 'count' => 20, 'paginate' => '',
'tabs' => [['title' => '付费徽标用例', 'cat' => '9']],
]);
$cases['pay_meta_right'] = \AKSRT\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$cases['pay_meta_right'] = \Jio\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$paid_instance['mini_opt'] = [];
$cases['pay_meta_hidden'] = \AKSRT\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$cases['pay_meta_hidden'] = \Jio\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$paid_instance['mini_opt'] = ['show_meta'];
$GLOBALS['tab_fixture_global_style']['post_list_author'] = false;
$GLOBALS['tab_fixture_global_style']['post_list_time'] = false;
$cases['pay_meta_left'] = \AKSRT\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$cases['pay_meta_left'] = \Jio\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$GLOBALS['tab_fixture_global_style']['post_list_author'] = true;
$GLOBALS['tab_fixture_global_style']['post_list_time'] = true;
$GLOBALS['tab_fixture_paid_settings']['display']['currency_symbol'] = '€';
$cases['pay_meta_custom_currency'] = \AKSRT\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$cases['pay_meta_custom_currency'] = \Jio\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$GLOBALS['tab_fixture_paid_settings']['display']['currency_symbol'] = '¥';
$GLOBALS['tab_fixture_vip_settings'] = [
@@ -326,7 +326,7 @@ namespace {
2 => ['enabled' => false, 'name' => '钻石会员', 'img_icon' => 'https://example.test/vip-2.svg'],
],
];
$cases['pay_vip1_only'] = \AKSRT\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$cases['pay_vip1_only'] = \Jio\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$GLOBALS['tab_fixture_vip_settings'] = [
'enabled' => true,
'levels' => [
@@ -334,7 +334,7 @@ namespace {
2 => ['enabled' => true, 'name' => '钻石会员', 'img_icon' => 'https://example.test/vip-2.svg'],
],
];
$cases['pay_vip2_only'] = \AKSRT\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$cases['pay_vip2_only'] = \Jio\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$GLOBALS['tab_fixture_vip_settings'] = [
'enabled' => false,
'levels' => [
@@ -342,7 +342,7 @@ namespace {
2 => ['enabled' => false, 'name' => '钻石会员', 'img_icon' => 'https://example.test/vip-2.svg'],
],
];
$cases['pay_vip_disabled'] = \AKSRT\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$cases['pay_empty'] = aksrt_renderer_compact_pay_badge([]);
$cases['pay_vip_disabled'] = \Jio\WidgetSystem\PostRenderer::payload($paid_instance, 'tab_posts', 1, '0')['html'];
$cases['pay_empty'] = jio_renderer_compact_pay_badge([]);
echo json_encode(['cases' => $cases], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR);
}