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>
55 lines
2.5 KiB
PHP
55 lines
2.5 KiB
PHP
<?php
|
|
/** Exercise the production TOC widget and article asset resolver. */
|
|
declare(strict_types=1);
|
|
|
|
namespace Jio\Settings {
|
|
final class Settings {
|
|
public static function get_comment_display_settings(): array { return []; }
|
|
}
|
|
}
|
|
|
|
namespace Jio\WidgetSystem {
|
|
final class AssetManager {
|
|
public static function enqueue_for(WidgetDefinition $definition): void {}
|
|
}
|
|
}
|
|
|
|
namespace {
|
|
require __DIR__ . '/bootstrap.php';
|
|
function get_post_meta(int $id, string $key, bool $single = false) { return $GLOBALS['toc_meta'][$key] ?? []; }
|
|
function get_post_type(int $id): string { return 'post'; }
|
|
function post_password_required(int $id): bool { return false; }
|
|
function comments_open(int $id): bool { return false; }
|
|
function get_comments_number(int $id): int { return 0; }
|
|
function jio_resolve_single_post_display_settings(int $id): array { return $GLOBALS['toc_settings']; }
|
|
class TocPost extends WP_Post { public string $post_content = '[dynamic_headings]'; }
|
|
$GLOBALS['jio_test_state']['singular'] = true;
|
|
$GLOBALS['jio_test_state']['current_id'] = 8;
|
|
$GLOBALS['jio_test_state']['current_post'] = new TocPost(8);
|
|
$GLOBALS['toc_settings'] = [];
|
|
$GLOBALS['toc_meta'] = [];
|
|
$resolver = new class {
|
|
use \Jio\Core\ScriptsPart1c { resolve_singular_asset_requirements as public requirements; }
|
|
};
|
|
$cases = ['dynamic_headings' => $resolver->requirements(true, false, false)['has_toc']];
|
|
$GLOBALS['toc_settings'] = ['article_nav' => false];
|
|
$cases['global_disabled'] = $resolver->requirements(true, false, false)['has_toc'];
|
|
$GLOBALS['toc_settings'] = ['article_nav' => true];
|
|
$GLOBALS['toc_meta'][\Jio\Core\DomainModel::POST_META_KEY] = ['no_article-navs' => true];
|
|
$cases['post_disabled'] = $resolver->requirements(true, false, false)['has_toc'];
|
|
$GLOBALS['toc_meta'] = [];
|
|
$cases['other_page'] = $resolver->requirements(false, false, false)['has_toc'];
|
|
$definition = \Jio\WidgetSystem\WidgetRegistry::get('posts_toc');
|
|
$cases['widget_fields'] = array_column($definition->fields(), 'id');
|
|
$widget = new \Jio\WidgetSystem\SchemaWidget($definition);
|
|
$widget->_set(2);
|
|
ob_start();
|
|
$widget->widget(['before_widget' => '<aside>', 'after_widget' => '</aside>'], ['title' => '目录 & 标题', 'mini_title' => '副标题', 'in_affix' => true]);
|
|
$cases['widget'] = ob_get_clean();
|
|
$GLOBALS['jio_test_state']['singular'] = false;
|
|
ob_start();
|
|
$widget->widget([], []);
|
|
$cases['non_article_widget'] = ob_get_clean();
|
|
echo json_encode($cases, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR);
|
|
}
|