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
@@ -22,7 +22,7 @@ test('modal and sign page use one renderer and one state machine', () => {
|
||||
assert.match(shared, /data-auth-panel="bind"/);
|
||||
assert.match(shared, /data-auth-panel="oauth"/);
|
||||
assert.match(scripts, /assets\/js\/auth\.js/);
|
||||
assert.match(scripts, /'aksrt-auth',[\s\S]*?assets\/js\/auth\.js[\s\S]*?\['loader_js'\]/);
|
||||
assert.match(scripts, /'jio-auth',[\s\S]*?assets\/js\/auth\.js[\s\S]*?\['loader_js'\]/);
|
||||
assert.doesNotMatch(scripts, /modal-auth\.js|sign-register\.js/);
|
||||
assert.doesNotMatch(runtime, /signsubmit-loader|tbquire\(\['sign-register'\]\)|\.on\('click', '\.(?:signin|signup)-loader'/);
|
||||
assert.doesNotMatch(loader, /sign-register/);
|
||||
@@ -56,15 +56,15 @@ test('authentication settings use reference defaults and canonical keys', () =>
|
||||
});
|
||||
|
||||
test('authentication galleries save attachment IDs and are consumed by both surfaces', () => {
|
||||
const field = read('assets/admin/src/components/form/AksField.vue');
|
||||
const gallery = read('assets/admin/src/components/form/AksGalleryField.vue');
|
||||
const field = read('assets/admin/src/components/form/JioField.vue');
|
||||
const gallery = read('assets/admin/src/components/form/JioGalleryField.vue');
|
||||
const provider = read('src/Admin/SchemaProvider.php');
|
||||
const reader = read('src/Settings/AuthReader.php');
|
||||
const modal = read('templates/parts/modal-auth.php');
|
||||
const page = read('templates/pages/page-sign.php');
|
||||
const css = read('assets/css/routes/sign.css');
|
||||
|
||||
assert.match(field, /<AksGalleryField[\s\S]*?schema\.type === 'gallery'/);
|
||||
assert.match(field, /<JioGalleryField[\s\S]*?schema\.type === 'gallery'/);
|
||||
assert.match(gallery, /multiple:\s*true/);
|
||||
assert.match(gallery, /Number\.parseInt\(attachment\.id/);
|
||||
assert.match(provider, /'gallery'\s*=>\s*'attachment_ids'/);
|
||||
@@ -88,10 +88,10 @@ test('only the shared authentication REST routes and /sign/ renderer are registe
|
||||
assert.match(controller, new RegExp(route.replace('/', '\\/')));
|
||||
});
|
||||
assert.doesNotMatch(controller, /auth\/(?:modal-|phone-|send-sms-code|bind-phone)/);
|
||||
assert.match(router, /'sign'\s*=>\s*'index\.php\?aksrt_sign=1'/);
|
||||
assert.match(router, /'sign'\s*=>\s*'index\.php\?jio_sign=1'/);
|
||||
assert.doesNotMatch(router, /'login'\s*=>|'register'\s*=>|'reset-password'\s*=>|'verify-email'\s*=>|'bind-account'\s*=>/);
|
||||
assert.match(router, /aksrt_bypass/);
|
||||
assert.match(router, /\$action === 'logout'[\s\S]*?aksrt_get_logout_url/);
|
||||
assert.match(router, /jio_bypass/);
|
||||
assert.match(router, /\$action === 'logout'[\s\S]*?jio_get_logout_url/);
|
||||
assert.doesNotMatch(router, /is_user_logged_in\(\) && current_user_can\('manage_options'\)|wp_doing_ajax\(\)/);
|
||||
assert.match(urls, /home_url\('\/sign\/'\)/);
|
||||
});
|
||||
@@ -136,7 +136,7 @@ test('unified handlers enforce nonce, captcha, rate limits, configured channels,
|
||||
assert.match(handlers, /账号或密码错误/);
|
||||
assert.match(handlers, /账号或验证码错误/);
|
||||
assert.match(service, /signin_phone_enabled/);
|
||||
assert.doesNotMatch(service + serviceA + serviceB, /aksrt_require_captcha/);
|
||||
assert.doesNotMatch(service + serviceA + serviceB, /jio_require_captcha/);
|
||||
assert.doesNotMatch(service + serviceA + serviceB, /_auth_code_verified|_defer_login/);
|
||||
assert.doesNotMatch(service, /captcha_scene/);
|
||||
assert.match(handlers, /public function user_bind_phone[\s\S]*?auth_require_captcha\('bind_phone'/);
|
||||
@@ -177,7 +177,7 @@ test('shared renderer contracts every configured authentication state', () => {
|
||||
assert.match(shared, /oauth-button-lg/);
|
||||
assert.match(shared, /data-auth-qrcode/);
|
||||
assert.match(modal, /data-auto=/);
|
||||
assert.match(client, /aksrtAuthAutoUntil/);
|
||||
assert.match(client, /jioAuthAutoUntil/);
|
||||
assert.match(client, /data-password-show/);
|
||||
assert.match(client, /pollQr/);
|
||||
assert.match(client, /AbortController/);
|
||||
@@ -205,8 +205,8 @@ test('OAuth frontend is accessible, redirect-aware, and removes retired provider
|
||||
const signCss = read('assets/css/routes/sign.css');
|
||||
const mainCss = read('assets/css/main.css');
|
||||
|
||||
assert.match(modal, /role="dialog"[^>]*aria-modal="true"[^>]*aria-labelledby="aksrt-auth-modal-title"/);
|
||||
assert.match(modal, /id="aksrt-auth-modal-title"/);
|
||||
assert.match(modal, /role="dialog"[^>]*aria-modal="true"[^>]*aria-labelledby="jio-auth-modal-title"/);
|
||||
assert.match(modal, /id="jio-auth-modal-title"/);
|
||||
assert.match(client, /focusableModalItems/);
|
||||
assert.match(client, /lastModalTrigger/);
|
||||
assert.match(client, /restore\.focus\(\)/);
|
||||
@@ -253,7 +253,7 @@ test('the social-login area drops the implicit agreement line', () => {
|
||||
});
|
||||
|
||||
test('brand icons resolve Gitee and Google to the reference SVG sprite', () => {
|
||||
const icons = read('inc/helpers/aksrt-icons.php');
|
||||
const icons = read('inc/helpers/jio-icons.php');
|
||||
const sprites = read('assets/js/runtime/svg-icon.js');
|
||||
|
||||
// FA5 Free ships no Gitee brand glyph and no multi-colour Google mark, so both
|
||||
@@ -262,17 +262,17 @@ test('brand icons resolve Gitee and Google to the reference SVG sprite', () => {
|
||||
assert.match(icons, /'google'\s*=>\s*'zibsvg-google-color'/);
|
||||
assert.match(icons, /'github'\s*=>\s*'fa fab fa-github'/);
|
||||
assert.match(icons, /'wechat'\s*=>\s*'fa fab fa-weixin'/);
|
||||
assert.match(sprites, /aksrt_svgs\['gitee'\]/);
|
||||
assert.match(sprites, /aksrt_svgs\['google-color'\]/);
|
||||
assert.match(sprites, /jio_svgs\['gitee'\]/);
|
||||
assert.match(sprites, /jio_svgs\['google-color'\]/);
|
||||
// Sprite values must reach the shared icon renderer instead of being wrapped
|
||||
// in a bogus <i class="zibsvg-…">.
|
||||
assert.match(icons, /strpos\(\$class, 'zibsvg-'\) === 0[\s\S]*?aksrt_icon_markup\(\$class, \$extra_classes\)/);
|
||||
assert.match(icons, /strpos\(\$class, 'zibsvg-'\) === 0[\s\S]*?jio_icon_markup\(\$class, \$extra_classes\)/);
|
||||
});
|
||||
|
||||
test('the top-nav user popover reproduces the reference quick-login block', () => {
|
||||
const oauth = read('src/Auth/OAuth.php');
|
||||
const header = read('inc/helpers/header/aksrt-header-navbar.php');
|
||||
const links = read('inc/helpers/aksrt-links.php');
|
||||
const header = read('inc/helpers/header/jio-header-navbar.php');
|
||||
const links = read('inc/helpers/jio-links.php');
|
||||
const legacyCss = read('assets/css/frontend/pages/base-1.css');
|
||||
|
||||
assert.match(oauth, /social-separator separator muted-3-color em09 mt10/);
|
||||
@@ -284,9 +284,9 @@ test('the top-nav user popover reproduces the reference quick-login block', () =
|
||||
assert.match(oauth, /oauth_button_lg/);
|
||||
|
||||
// Callers append the block verbatim — no hand-rolled separator or wrapper.
|
||||
assert.match(header, /render_social_buttons\(__\('快速登录', 'aksrt'\)\)/);
|
||||
assert.match(header, /render_social_buttons\(__\('快速登录', 'jio'\)\)/);
|
||||
assert.doesNotMatch(header, /social-separator|social_loginbar/);
|
||||
assert.match(links, /render_social_buttons\(__\('使用以下方式快速登录', 'aksrt'\)\)/);
|
||||
assert.match(links, /render_social_buttons\(__\('使用以下方式快速登录', 'jio'\)\)/);
|
||||
assert.doesNotMatch(links, /social_loginbar/);
|
||||
|
||||
// The retired .social-login-divider / .oauth-row / .oauth-btn markup and its
|
||||
@@ -299,7 +299,7 @@ test('provider URLs stay raw in the data layer and are escaped once per surface'
|
||||
const oauth = read('src/Auth/OAuth.php');
|
||||
const shared = read('templates/parts/auth-content.php');
|
||||
const userRenderer = read('src/WidgetSystem/Renderers/UserRenderer.php');
|
||||
const comments = read('inc/helpers/aksrt-comments.php');
|
||||
const comments = read('inc/helpers/jio-comments.php');
|
||||
|
||||
// get_auth_providers_data() hands out raw URLs, exactly like its sibling
|
||||
// get_frontend_bindings_data() does. esc_url() is idempotent on its own
|
||||
|
||||
Reference in new issue
Block a user