fix(frontend): route every user-center points label through the custom currency name
后台「积分配置 → 自定义货币名称」改名后,用户中心仍有大量硬编码 「积分」:做任务赚积分 / 购买积分 / 签到领积分、积分记录 / 积分任务、 每日可免费获取 XX 积分、我的积分、积分+1、创作中心积分收益等。 get_currency_name() 早已存在且可用,问题只是这些文案没有走它。 本PR 全部替换,无双路、无迁移: 服务端渲染(用户中心 renderers) - credits-balance.php:购买/做任务赚/签到领 + 整个购买弹窗 - profile-credits.php:积分记录 / 积分任务 页签 - credits-points-tasks.php:每日上限三态与空态 - sidebar-creator.php / profile-creator.php:积分收益 - transfer-modal.php:积分转账提示 - Signin.php:签到详情弹窗(我的积分 / 奖励 tooltip / 积分+N) - VipServiceModal.php:我的积分 / 积分兑换会员 - download-permission-card.php:购买价格 客户端渲染(JS 无法调用 PHP,注入 currencyName 到 aksrtData) - signin.js:签到状态行「已签到 N 天 +1」 - credits.js:转账标题/金额标签 + 购买提示 toast - cms-download.js:积分不足视图、我的积分 入口、余额不足文案 - pay-vip.js:积分兑换会员入口(优先 catalog.currency_name) - order-center.js:订单行单位回退 契约测试同步改为断言模板构造而非死字符串,并新增两例: 改名后跟随、未注入时回退「积分」。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
1c95f94bca
commit
5c6b422866
19 files changed
+170
-59
No files matched your search
+10
-4
@@ -16,6 +16,12 @@
|
||||
}
|
||||
var activePoll = null;
|
||||
|
||||
// 自定义货币名称(后台「积分配置 → 自定义货币名称」)由服务端注入。
|
||||
// 转账标题/金额标签与购买提示都在客户端拼装,必须跟随它。
|
||||
function currencyName() {
|
||||
return (aksrt && aksrt.currencyName) || '积分';
|
||||
}
|
||||
|
||||
function operationKey(owner) {
|
||||
if (!owner.dataset.aksrtOperationKey) {
|
||||
owner.dataset.aksrtOperationKey = window.AksrtRequest.createIdempotencyKey();
|
||||
@@ -495,7 +501,7 @@
|
||||
? Math.max(1, parseInt(btn.getAttribute('data-aksrt-transfer-min') || '1', 10) || 1)
|
||||
: 1;
|
||||
if (typeInput) typeInput.value = type;
|
||||
if (title) title.textContent = type === 'points' ? '积分转账' : '余额转账';
|
||||
if (title) title.textContent = type === 'points' ? currencyName() + '转账' : '余额转账';
|
||||
var amountEl = form ? form.querySelector('[data-aksrt-transfer-amount]') : null;
|
||||
if (amountEl) {
|
||||
amountEl.min = type === 'points' ? String(pointsTransferMin) : '0.01';
|
||||
@@ -503,7 +509,7 @@
|
||||
amountEl.inputMode = type === 'points' ? 'numeric' : 'decimal';
|
||||
amountEl.value = '';
|
||||
}
|
||||
if (amountLabel) amountLabel.textContent = type === 'points' ? '积分' : '金额';
|
||||
if (amountLabel) amountLabel.textContent = type === 'points' ? currencyName() : '金额';
|
||||
if (balanceInfo) balanceInfo.hidden = type === 'points';
|
||||
if (pointsInfo) pointsInfo.hidden = type !== 'points';
|
||||
if (results) results.innerHTML = '';
|
||||
@@ -744,11 +750,11 @@
|
||||
selectProduct('custom');
|
||||
}
|
||||
if ((!pkg || pkg === 'custom') && !validCustom) {
|
||||
notyf('请选择或输入需购买的积分', 'danger');
|
||||
notyf('请选择或输入需购买的' + currencyName(), 'danger');
|
||||
return;
|
||||
}
|
||||
busy = true;
|
||||
notyf('正在购买积分…', 'load', '', 'aksrt-balance-points-toast');
|
||||
notyf('正在购买' + currencyName() + '…', 'load', '', 'aksrt-balance-points-toast');
|
||||
api('/pay/balance/points-exchange', {
|
||||
method: 'POST',
|
||||
headers: { 'Idempotency-Key': operationKey(form) },
|
||||
|
||||
Reference in new issue
Block a user