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
@@ -44,18 +44,18 @@ test('main owns the one global auto_fun boot', () => {
|
||||
assert.match(main, /jQuery\(document\)\.trigger\(['"]auto_fun['"]\)/);
|
||||
});
|
||||
|
||||
test('theme and comments do not depend on the removed aksrt namespace APIs', () => {
|
||||
test('theme and comments do not depend on the removed jio namespace APIs', () => {
|
||||
const theme = read('assets/js/core/theme.js');
|
||||
const comments = read('assets/js/comment-ajax.js');
|
||||
const runtime = read('assets/js/runtime/main.min.js');
|
||||
|
||||
assert.match(theme, /window\.aksrtData\.themeMode/);
|
||||
assert.doesNotMatch(theme, /(?:window\.)?aksrt\.toggleTheme/);
|
||||
assert.doesNotMatch(comments, /(?:window\.)?aksrt\.(?:__|confirm)/);
|
||||
assert.doesNotMatch(runtime, /(?:window\.)?aksrt\.(?:toggleTheme|__|confirm)/);
|
||||
assert.match(theme, /window\.jioData\.themeMode/);
|
||||
assert.doesNotMatch(theme, /(?:window\.)?jio\.toggleTheme/);
|
||||
assert.doesNotMatch(comments, /(?:window\.)?jio\.(?:__|confirm)/);
|
||||
assert.doesNotMatch(runtime, /(?:window\.)?jio\.(?:toggleTheme|__|confirm)/);
|
||||
});
|
||||
|
||||
test('theme initializes when the removed aksrt namespace is absent', () => {
|
||||
test('theme initializes when the removed jio namespace is absent', () => {
|
||||
const classList = { toggle() {}, contains() { return false; } };
|
||||
const document = {
|
||||
readyState: 'complete',
|
||||
@@ -87,27 +87,27 @@ test('theme initializes when the removed aksrt namespace is absent', () => {
|
||||
Date,
|
||||
Math,
|
||||
}));
|
||||
assert.equal(window.aksrt, undefined);
|
||||
assert.equal(window.jio, undefined);
|
||||
});
|
||||
|
||||
test('routed modules use one namespaced auto_fun owner and no registry', () => {
|
||||
for (const file of routed) {
|
||||
const source = read(file);
|
||||
assert.match(source, /\.off\(['"]auto_fun\.[^'"]+['"]\)\.on\(['"]auto_fun\.[^'"]+['"]/, file);
|
||||
assert.doesNotMatch(source, /AksrtFrontend|aksrt\.autoFun|aksrt:(?:ready|rehydrated)/, file);
|
||||
assert.doesNotMatch(source, /JioFrontend|jio\.autoFun|jio:(?:ready|rehydrated)/, file);
|
||||
}
|
||||
});
|
||||
|
||||
test('wallet reward content opens in the shared modal runtime once', () => {
|
||||
const reward = read('assets/js/reward.js');
|
||||
const helper = read('inc/helpers/aksrt-rewards.php');
|
||||
const helper = read('inc/helpers/jio-rewards.php');
|
||||
const authorBar = read('templates/parts/single-author-bar.php');
|
||||
const singleActions = read('inc/helpers/aksrt-single-render.php');
|
||||
const singleActions = read('inc/helpers/jio-single-render.php');
|
||||
const scripts = read('src/Core/ScriptsPart1b.php');
|
||||
const scriptsPart1c = read('src/Core/ScriptsPart1c.php');
|
||||
|
||||
assert.match(reward, /runtime\.open\(\{/);
|
||||
assert.match(reward, /className: 'aksrt-reward-modal modal-mini full-sm'/);
|
||||
assert.match(reward, /className: 'jio-reward-modal modal-mini full-sm'/);
|
||||
assert.match(reward, /mobileBottom: true/);
|
||||
assert.match(reward, /shell\.setAttribute\('aria-labelledby', title\.id\)/);
|
||||
assert.match(reward, /'Idempotency-Key': key/);
|
||||
@@ -119,31 +119,31 @@ test('wallet reward content opens in the shared modal runtime once', () => {
|
||||
assert.match(helper, /static \$done = \[\]/);
|
||||
assert.match(helper, /isset\(\$done\[\$key\]\)/);
|
||||
assert.match(helper, /modal-colorful-header colorful-bg jb-blue/);
|
||||
assert.match(helper, /data-aksrt-modal-close/);
|
||||
assert.match(helper, /data-aksrt-reward-submit/);
|
||||
assert.match(authorBar, /aksrt_render_rewards_template_for_user/);
|
||||
assert.match(singleActions, /aksrt_render_rewards_template_for_user/);
|
||||
assert.match(helper, /data-jio-modal-close/);
|
||||
assert.match(helper, /data-jio-reward-submit/);
|
||||
assert.match(authorBar, /jio_render_rewards_template_for_user/);
|
||||
assert.match(singleActions, /jio_render_rewards_template_for_user/);
|
||||
assert.match(scriptsPart1c, /\$requirements\['needs_reward'\]\s*=\s*\$is_article && !empty\(\$settings\['rewards_enabled'\]\)/);
|
||||
assert.match(scriptsPart1c, /\$singular_assets\['needs_reward'\][\s\S]*?\$reward_js[\s\S]*?'aksrt-reward'/);
|
||||
assert.doesNotMatch(helper + authorBar + singleActions, /aksrt_render_rewards_modal_for_user|reward-modal__qr/);
|
||||
assert.match(scriptsPart1c, /\$singular_assets\['needs_reward'\][\s\S]*?\$reward_js[\s\S]*?'jio-reward'/);
|
||||
assert.doesNotMatch(helper + authorBar + singleActions, /jio_render_rewards_modal_for_user|reward-modal__qr/);
|
||||
});
|
||||
|
||||
test('user center navigation initializes once across auto_fun rescans', () => {
|
||||
const source = read('assets/js/routes/user-center.js');
|
||||
const initAt = source.indexOf('function initDashboardNavigation()');
|
||||
const guardAt = source.indexOf('aksrtUserCenterNavigationInitialized', initAt);
|
||||
const guardAt = source.indexOf('jioUserCenterNavigationInitialized', initAt);
|
||||
const initialActivateAt = source.indexOf('activate(initialTab, false)', initAt);
|
||||
|
||||
assert.ok(initAt >= 0);
|
||||
assert.ok(guardAt > initAt && guardAt < initialActivateAt);
|
||||
assert.match(source.slice(initAt, initialActivateAt), /if \(document\.documentElement\.dataset\.aksrtUserCenterNavigationInitialized === 'true'\) return;/);
|
||||
assert.match(source.slice(initAt, initialActivateAt), /document\.documentElement\.dataset\.aksrtUserCenterNavigationInitialized = 'true';/);
|
||||
assert.match(source.slice(initAt, initialActivateAt), /if \(document\.documentElement\.dataset\.jioUserCenterNavigationInitialized === 'true'\) return;/);
|
||||
assert.match(source.slice(initAt, initialActivateAt), /document\.documentElement\.dataset\.jioUserCenterNavigationInitialized = 'true';/);
|
||||
assert.doesNotMatch(source, /name === 'vip' && !forceLoad\) forceLoad = true/);
|
||||
});
|
||||
|
||||
test('homepage tabs refresh the original pane DOM through the runtime post_ajax pipeline', () => {
|
||||
const layout = read('inc/helpers/homepage/layout.php')
|
||||
const homepage = read('inc/helpers/aksrt-homepage.php')
|
||||
const homepage = read('inc/helpers/jio-homepage.php')
|
||||
const controller = read('src/Admin/GlobalController.php')
|
||||
|
||||
// legacy zib_index_tab_html 契约:data-toggle="tab" + data-ajax 栏目链接。
|
||||
@@ -159,17 +159,17 @@ test('homepage tabs refresh the original pane DOM through the runtime post_ajax
|
||||
assert.match(layout, /'nofilter' => 'true'/)
|
||||
// 不再有旁路刷新:REST 面板、骨架屏、面板 footer 全部移除。
|
||||
assert.equal(fs.existsSync(path.join(root, 'assets/js/homepage-fixed.js')), false)
|
||||
assert.doesNotMatch(layout, /data-home-tab-panel|aksrt-homepage__panel|aksrt-homepage__tab|requestHomepagePanel|data-sticky-tabs/)
|
||||
assert.doesNotMatch(layout, /data-home-tab-panel|jio-homepage__panel|jio-homepage__tab|requestHomepagePanel|data-sticky-tabs/)
|
||||
assert.doesNotMatch(controller, /homepage\/tab-posts|rest_homepage_tab_posts/)
|
||||
|
||||
// 排序菜单 = zib_ajax_option_menu('home') 契约:win-ajax-replace="filter" + ajax-next 链接。
|
||||
assert.match(homepage, /function aksrt_homepage_render_ajax_option_menu/)
|
||||
assert.match(homepage, /function jio_homepage_render_ajax_option_menu/)
|
||||
assert.match(homepage, /win-ajax-replace="filter"/)
|
||||
assert.match(homepage, /ajax-replace="true" class="' \. esc_attr\(\$_class\)/)
|
||||
assert.match(homepage, /!empty\(\$_GET\['nofilter'\]\)/)
|
||||
// 主查询吃 ?orderby=(legacy zib_sift_posts_per_orde),排序原位刷新才有效。
|
||||
assert.match(homepage, /function aksrt_homepage_get_request_sort/)
|
||||
assert.match(read('inc/helpers/homepage/content.php'), /aksrt_homepage_get_request_sort\(\)/)
|
||||
assert.match(homepage, /function jio_homepage_get_request_sort/)
|
||||
assert.match(read('inc/helpers/homepage/content.php'), /jio_homepage_get_request_sort\(\)/)
|
||||
|
||||
// runtime 是 tab/排序的唯一引擎。
|
||||
const runtime = read('assets/js/runtime/main.js')
|
||||
@@ -180,7 +180,7 @@ test('homepage tabs refresh the original pane DOM through the runtime post_ajax
|
||||
})
|
||||
|
||||
test('archive streams nest pagination inside the ajaxpager for tab extraction', () => {
|
||||
const archive = read('inc/helpers/aksrt-archive.php')
|
||||
const archive = read('inc/helpers/jio-archive.php')
|
||||
assert.match(archive, /append_inner_html/)
|
||||
assert.doesNotMatch(archive, /content-stream__footer/)
|
||||
assert.match(read('inc/helpers/posts-renderer/markup.php'), /append_inner_html/)
|
||||
@@ -219,6 +219,6 @@ test('non-generated first-party sources contain no deprecated lifecycle API', ()
|
||||
});
|
||||
for (const file of files) {
|
||||
const source = fs.readFileSync(file, 'utf8');
|
||||
assert.doesNotMatch(source, /AksrtFrontend|aksrt\.autoFun|aksrt:(?:ready|rehydrated)/, path.relative(root, file));
|
||||
assert.doesNotMatch(source, /JioFrontend|jio\.autoFun|jio:(?:ready|rehydrated)/, path.relative(root, file));
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user