kate522
32e76b440f
fix(frontend): 用户中心余额与积分记录不再拼接括号内容
...
记录行只保留中文变动原因、时间与变动额,移除名称后的(引用键/备注/提现单号)拼接。
同步清理该改动产生的死代码:$record_note 计算块、.uc-transactions__remark 样式、LedgerQuery 中已无消费者的 financial_flow LEFT JOIN 与 withdrawal_number 字段,以及 credits-wallet.php 里恒为 true 的 $skip_wallet_ledger 双路分支。
2026-09-19 11:46:01 +08:00
kate522
3bec2a5777
fix(icons): 图标类名统一为 FA5 语法并修正一处失效图标名
...
主题打包的是 Font Awesome 5,solid 字形必须带样式类 fas。全站有 18 处仍写成
FA4 的裸 fa fa-*,FA5 下并不存在对应字形,表现为图标位置空白;而 FA5-only
契约此前只扫描部分运行时文件,没有覆盖模板与渲染器,这些写法一直没被拦下。
同时发现一处真实的失效图标名:profile-level.php 用的是 fa-line-chart。这是
FA4 名称,FA5 把该系列重命名为 chart-*,正确写法是 fa-chart-line。
- 18 处 "fa fa-*" 补上 fas:首页模板、组件标记、评论表单、用户等级页、菜单
装饰、SchemaPayment 促销标签默认值、VIP 服务弹窗、ContentRenderer /
GeneralRenderer、后台卡片样式校验、pay-vip.js
- profile-level.php 的 fa-line-chart 修正为 fa-chart-line
- 三处注释里的示例值同步为合法形态("fa fas fa-star"),避免被当成正确写法
抄走;credits.css 注释中直接写出旧字体族名的一处改为描述性表述,否则会被
FA5-only 契约当作违规命中
- legacy-navigation-contract:FA 资产断言改为跟随 aksrt_enqueue_fontawesome()
这一间接层(注册点已从脚本文件移到 inc/helpers/aksrt-icons.php),并把
fa-zibsvg-<key> 识别为项目自有 SVG sprite 族,而非 Font Awesome 字形
- vip-points-exchange-modal 契约同步断言 fa fas fa-angle-right
验证:改动前在干净 HEAD 上跑 node --test(已追踪用例)为 327 项 / 325 通过 /
2 失败,两项失败正是本次修复的失效图标名断言与 FA 版本号断言;改动后 333 项 /
333 通过(含 5 个本地专用用例共 370 项全部通过)。php -l 全部改动的 PHP 文件
通过。
2026-09-18 23:17:05 +08:00
kate522
95ff0761b7
fix(vip): 积分兑换弹窗改服务端渲染并与 Zibll 1:1 对齐
...
/user/vip/ 的积分兑换会员弹窗原先是前端自行拼装的,结构与层级都与参考主题
Zibll 不一致:Zibll 走 zibpay_get_vip_points_exchange_modal() 服务端渲染静态
壳,前端只按需开合。改为同一模型,前端不再拼 HTML。
- VipServiceModal 新增 get_points_exchange_modal_html():门控(未登录/未开启
返回空串)、vip-card 套餐选择、积分不足提示与提交表单;wp_footer 挂载输出
- pay-vip.js 移除 renderPointsModal / pointsPackage / exchangeFromModal /
vipPointsPay,改为自包含开合(.in + 内联 display:flex + 独立遮罩 +
body.modal-open + ESC),保留 aksrt-vip-points-toast 的 load/success/danger 契约
- 移除 /user/vip/ 页面底部独立积分兑换入口及其样式(uc-vip-points-link)
- credits.js 清理依赖全站不存在选择器的死代码 initVipPointsExchange()
- vip-modal.css 删除 71 行自实现样式,改为 .modal[data-aksrt-vip-points-modal]
显隐契约;层级 100050 < 遮罩 100055 < 弹窗 100060 < notyf 10000000
- 新增 vip-points-exchange-modal 契约测试(7 项),toast-contract 同步
静止态必须显式 display:none,否则 .flex{display:flex} 会覆盖 .modal{display:none}
形成隐形遮罩拦截整页点击。
未写数据迁移。
验证:node --test tests/widget-system/*.test.cjs 308 项全部通过;php -l 全部
改动文件通过;隔离渲染桩确认积分充足 / 积分不足 / 功能关闭 / 未登录四种情形
的 HTML 产物正确。
2026-09-18 20:05:05 +08:00
kate522
721fa29b8d
fix(vip): 会员弹窗支付方式渠道对齐 Zibll initiate_pay_input 组件
...
支付方式 UI 不再自实现(uc-vip-shop__method 文本 radio),改为与其他
两个弹窗(充值/积分)完全同源的 Zibll zibpay_get_initiate_pay_input
组件结构:
- 支付方式行:.payment-method-radio.hollow-radio + logo 图 +
data-for/data-value 选中模型(多渠道时展示「请选择支付方式」)
- 我的余额盒:data-controller == balance 条件显隐,展示货币符号与余额
(视图模型透传 wallet_balance / currency_mark)
- 卡密盒:Zibll password_box 同构(mb10 padding-h10 padding-w6 +
desc muted-box + form-control 卡号/卡密输入)
- hidden payment_method + initiate-pay 按钮类(mt6 but jb-red
btn-block radius)
- 服务端 payment_method_logo_url() 统一映射 pay-*-logo.svg
- 显隐统一走 data-controller(==/!=)通用匹配,卡密选中隐藏 .charge-box
- 清理 uc-vip-shop__method* 死样式与旧 change 监听;契约测试同步锁定
(.gitignore 白名单补 card-pass-modal-redeem.test.cjs)
2026-09-18 12:44:38 +08:00
kate522
e72d0710e6
fix(frontend): 购买积分弹窗壳静止态隐藏,修复整页不可点击回归
...
根因与 2026-09-17 充值弹窗故障同构:新增的购买积分弹窗壳同为服务端
静态输出(.modal.flex.jc.fade),credits.css 仅对充值壳做了静止态
display:none 压制,积分壳被 main.css 的 .flex{display:flex} 拉起永久
铺满全屏,叠加 .fade 的 opacity:0 形成隐形遮罩拦截整页点击。
修复:credits.css 追加 .modal[data-aksrt-points-pay-modal]{display:none}
与 .in{display:flex};打开态由 initPointsPay 的内联 display:flex 驱动,
关闭撤除内联样式后即回到隐藏规则。balance-charge-modal 契约测试同步
纳入积分壳护栏,防同类回归。
2026-09-18 12:31:38 +08:00
kate522
74e43aaa76
fix(frontend): 充值弹窗选中角标字体族对齐 FA5 并修正充值限额文案语序
...
1. 档位选中角标(.vip-product.active::before)沿用 Zibll 的 FA4 字体族
"FontAwesome",本主题打包的是 FA5(family "Font Awesome 5 Free"),
family 不存在 → PUA 码点 U+F058 渲染为豆腐块(被误认为破图)。
改为 'Font Awesome 5 Free' + font-weight:900(solid 字形要求),
渲染为粉色 check-circle,与 Zibll 视觉一致。
2. 自定义充值限额文案 sprintf 参数错位:「最高充值元9999」→
「最高充值9999元」。mark 为符号(¥)时按 Zibll 前缀格式
(最低充值¥1,最高充值¥9999)。
2026-09-17 22:44:23 +08:00
kate522
a6b7d09706
fix(frontend): 充值弹窗打开态改为 flex,修正对话框定位
...
无头 Chrome 对 Zibll 真实 CSS 的几何实证:bootstrap modal('show') 的
内联 display:block 下,.modal.flex .modal-dialog{margin:0} 使对话框
顶在左上角(l=0,t=0);Zibll 生产环境打开态实为 CSS 的 display:flex
(壳的 .flex.jc 双轴居中,jQuery .show() 对 computed≠none 的壳是空
操作,内联 display 从未写入)。AKSRT 上一版把打开态定为 display:block,
导致对话框定位错误。
修复:credits.css 的 .modal[data-aksrt-charge-modal].in 改为
display:flex;credits.js openChargeModal 内联 display 同步改 flex。
静止态 display:none 规则不变。
几何复测(AKSRT 真实 CSS):打开态中心与视口中心、与 Zibll 参考
逐像素一致(dlgCenter=vpCenter=379,213);静止态 display:none。
契约 29/29 通过(新增 flex 断言与 block 禁令)。
2026-09-17 22:25:37 +08:00
kate522
95289829ee
fix(frontend): 修复充值弹窗壳全屏隐形遮罩导致整页不可点击
...
根因:弹窗壳为服务端静态输出(Zibll 由 refresh_modal JS 按需创建,且其
CSS 无 bootstrap .modal 基础规则,故无此问题)。AKSRT 中 bootstrap.min.css
的 .modal{position:fixed;z-index:1050;display:none} 先加载,main.css 的
.flex{display:flex}(弹窗壳对齐 Zibll 所需的工具类)后加载且同特异性
后者胜 → 弹窗壳永久 display:flex 铺满全屏,叠加 .fade 无 .in 时的
opacity:0,形成隐形遮罩拦截整页点击。
修复:credits.css 以 (0,2,0) 特异性压制——
.modal[data-aksrt-charge-modal]{display:none}(静止态隐藏)+
.modal[data-aksrt-charge-modal].in{display:block}(展示态)。
credits.js 开关维持第 20 轮的自包含实现(内联 display:block 驱动),
关闭撤除内联样式后即回到隐藏规则,无 JS 改动。
新增契约 tests/widget-system/balance-charge-modal.test.cjs(3 例):
壳结构与 data 钩子、静止态隐藏规则(防 .flex 覆盖回潮)、开关自包含
(禁止回退 jQuery modal 运行时)。相关契约 29/29 通过。
2026-09-17 22:03:02 +08:00
kate522
50065ccc3e
fix(frontend): 余额充值弹窗 1:1 对齐 Zibll
...
- credits-wallet.php:弹窗重写为 Zibll refresh_modal 壳(.modal.flex.jc.fade > .modal-dialog.modal-mini.full-sm)+ zibpay_get_balance_charge_modal 同构内容(balance-charge-form / vip-product.product-box / payment-method-radio hollow-radio / but jb-red initiate-pay),档位与支付方式改为 data-for/data-value 选中模型
- credits.js:initBalanceCharge 改由 Bootstrap modal 运行时驱动(modal('show') + data-dismiss + hidden.bs.modal 中止轮询);选中为程序赋值 hidden input,selectProduct/selectMethod 内显式 resetOperationKey 保证幂等键随选中内容刷新;提交契约不变
- credits.css:删除 uc-charge-* 全部死样式;新增 .balance-charge-form 作用域内 .zib-widget 基础卡与 .vip-product/.vip-tag 的 Zibll 原值回位(vip-modal.css 全局同名覆盖需在此回位)
验证:php -l 通过;toast-contract + card-pass-universal-redeem + card-pass-order-numbers 契约 26/26;uc-charge/balance_package/data-aksrt-charge-close/旧弹窗 id 引用清零
2026-09-17 20:38:55 +08:00
kate522
1889c9f048
fix(frontend): 卡密兑换通知接入全局 notyf Toast 固定 id 流
...
- credits.js initCardPass 从 setTip 内联提示迁移为固定 id 三态 notyf 流
(aksrt-card-pass-toast:load → success/danger 原位更新),
成功后延迟 800ms 刷新以保证成功 Toast 可见,对齐其余资产操作。
- credits-wallet.php 删除 data-aksrt-card-tip 死元素;credits.css 删除
.uc-card-pass__tip 死样式。
- 契约:toast-contract 将卡密兑换纳入固定 id 流清单并禁止 tip 回潮;
card-pass-universal-redeem 新增 Toast 流断言(27/27 通过)。
- 验证:容器内真实抓取 /user/balance/ 确认弹窗正常渲染且无 tip 残留。
2026-09-17 19:28:47 +08:00
kate522
3481620ed0
feat(payment): 通用卡密兑换弹窗并修正核销订单实付与订单名称
...
- /user/balance/ 余额卡片入口改为通用「卡密兑换」弹窗:请求不带类型,
后端按卡密自动识别余额/会员/积分;卡号输入恒展示且选填
- 后台「余额充值 → 卡密充值」语义更新为「卡密兑换」,开关更名
「启用卡密兑换功能」(设置键不变),双源 schema 同步并重建 SPA
- 删除死代码:credits-vip.php 死文件、credits-balance.php 内联积分
兑换块、/pay/card-pass/options 路由与 rest_options、labels 数组、
asset_points_card_description/password_only 死字段及内联块专属 CSS
- 卡密核销订单实付恒 0:create_redeem_order 源头写 0,UserOrders
对 card_pass 订单视图层归零覆盖历史行(不迁移数据)
- 订单名称按 note.meta 生成:卡密兑换-余额充值X / 卡密兑换-积分充值X /
购入[会员档位名]X天(永久)
- 新增契约 card-pass-universal-redeem.test.cjs,收紧 user-assets-layout
契约(禁 .uc-card-pass 根类回潮)
2026-09-17 19:04:47 +08:00
kate522
ba1c8c2822
style(user-center): 卡密兑换弹窗按钮右对齐
2026-09-16 21:20:23 +08:00
kate522
2ef02e2865
feat(user-center): 余额卡密兑换移入弹窗并在余额卡片增加入口
...
- 余额卡片右下角新增「卡密兑换」点击区(data-aksrt-card-pass-open)
- 内联 uc-card-pass 区块替换为 uc-modal 弹窗,兑换逻辑不变
- initCardPass 增加弹窗开关绑定(防重复绑定)
- 清理 :first-child > .uc-card-pass 死选择器片段
2026-09-16 21:15:04 +08:00
kate522
56d1b2a417
fix(user-center): 防止大额资产金额断行
2026-09-16 17:23:56 +08:00
kate522
bcba58f227
fix(user-center): 对齐宽屏提现记录列
2026-09-16 13:31:36 +08:00
kate522
a26ef3fadd
fix(user-center): 对齐窄屏提现状态标签
2026-09-16 13:20:53 +08:00
kate522
0871c8ea81
fix(user-center): 优化提现记录窄屏布局
2026-09-16 13:16:16 +08:00
kate522
3cedcd1bc2
fix(user-center): 单独弱化实际到账金额
2026-09-16 13:10:13 +08:00
kate522
d4e33706cf
style(user-center): 弱化提现记录文字样式
2026-09-16 13:05:56 +08:00
kate522
2c4bd3eb2a
fix(user-center): 调整提现记录金额展示
2026-09-16 13:00:27 +08:00
kate522
6bbb79213b
fix(user-center): 优化提现记录弹窗分页
2026-09-16 12:53:38 +08:00
kate522
27f54c8e35
修复资产卡片底部对齐
2026-09-15 22:24:49 +08:00
kate522
7efbbeed3f
修复余额页顶部资产卡片高度
2026-09-15 20:50:21 +08:00
kate522
10b3e6dd9f
进行了一些小优化
2026-08-24 17:47:04 +08:00
kate522
c8339feddb
重构购买卡头部标记
2026-08-23 11:06:33 +08:00
kate522
9375b1c30c
refactor(assets): vendor 资产迁入标准目录并全仓去除 zibll 标识
...
- assets/vendor 全量迁移: fontawesome5→assets/fontawesome5, css→assets/css,
js→assets/js/runtime(避开 14 个同名自有文件), img 合并去重→assets/img,
fonts→assets/fonts; 删除 assets/vendor
- libs 五个与 widgets/third-party 字节相同的库不重复入库, loader paths 改指向
- 运行时切换: _win.uri=assets 根, loader baseUrl=/js/runtime, enlighter 注入
路径同步; PHP 7 个引用文件切换并改名 $zibll_*→$runtime_*
- 去品牌: Qinver 头注释/品牌 console.log/演示链接清除, 默认文案中性化
- 功能标识符改名: zib__→aksrt__, zib_ajax→aksrt_ajax, window.zib→
window.aksrtLegacy, zibllblock/*→aksrtblock/*, .zib-widget→.aksrt-panel,
.zib-slider→.aksrt-slider, zib_menu_options meta 键等
- 自有 CSS 改名: legacy-utilities/compat-vars/footer shell
- admin SPA 重建; 契约测试同步(路径/断言/文件更名)
- 例外保留: tests/visual 对照环境与 fixtures 前缀(外部 Zibll 产品引用)
验证: php -l 133 个改动文件通过; runtime 86 个 JS node --check 通过;
契约测试 68/70(2 个失败经 stash 对照确认为存量问题)
2026-08-22 16:16:30 +08:00
kate522
5e2c143449
(fix):update credits toast
2026-08-18 03:09:37 +08:00
kate522 and Claude Fable 5
a5625b1765
fix(vip): enlarge membership icons
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-11 18:17:15 +08:00
kate522 and Claude Fable 5
52e119acbd
fix(vip): preserve cards and align level icons
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-11 18:09:59 +08:00
kate522 and Claude Fable 5
fbbc8faf3d
fix(vip): render membership icons without wrappers
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-11 18:02:34 +08:00
kate522 and Claude Fable 5
18da39788f
feat(vip): add default icons and remove download speed
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-11 17:48:10 +08:00
kate522 and Claude Fable 5
df858d04dc
feat(user-center): add VIP points exchange modal
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-09 16:15:08 +08:00
kate522
ed19937e99
feat(badges): zibll-style badge modal with category grid, detail view, and wear UX
2026-08-04 12:46:44 +08:00
kate522
20c19dfe31
feat(user): complete growth level chain
2026-07-30 09:38:45 +08:00
kate522
5ca3ead6aa
fix(vip): 1:1 zibll VIP profile card with dual-column layout
2026-07-21 20:37:25 +08:00
kate522
23416515d3
fix(vip): remove forced equity bullet dots
2026-07-21 20:24:56 +08:00
kate522
fce5ab3088
fix(vip): preserve equity HTML instead of re-splitting into list items
2026-07-21 20:19:11 +08:00
kate522
ee5a16f9a0
fix(ui): center float QR titles and repair UC VIP layout
2026-07-21 19:51:08 +08:00
kate522
f9b495eb14
fix(ui): VIP equity list wrap and theme toggle moon/sun icons
2026-07-21 18:19:42 +08:00
kate522
1f87ab3b1b
feat(vip): Batch 3 dedicated user-center VIP tab
...
Register 我的会员 panel, zibll-style status/equity cards, sidebar deep-link,
and slim credits-tab entry so VIP is no longer nested only under assets.
2026-07-21 17:09:23 +08:00
kate522
c789f71526
fix(user-center): drop outer mega-card under assets
...
Assets row is layout-only; each wallet/points cell is one card.
Strip zib-widget shell from record tabs so nothing stacks under.
2026-07-17 15:24:22 +08:00
kate522
e24780386b
fix(user-center): put wallet and points on one asset row
...
Drop nested zib-widget chrome on dual cards; one surface with
side-by-side cells (stack on mobile) instead of card-on-card.
2026-07-17 15:20:21 +08:00
kate522
5949c7a503
feat(identity): close free-task progress, level card, hot threshold
...
Finish remaining 1:1 parity gaps: free-task done/progress DTO with
daily marks, user-center level/integral card UI, configurable forum
hot recommend threshold, and task progress bars.
2026-07-17 02:05:10 +08:00
kate522
de32c9ad35
feat(user): wear badge modal and user-center entry
...
Expose 我的徽章 modal on profile header with REST wear actions and
update SPA badge help for icon_url + grant/wear flows.
2026-07-16 23:40:50 +08:00
kate522
a3585b0f96
feat(user-center): task list go-to actions for free points
...
Add per-task CTAs (去签到 / 去完成 / 去看看) on the free points tasks list,
with sign-in proxying to the asset-card button and bbs actions gated
on forum availability.
2026-07-16 22:11:52 +08:00
kate522
4da003663d
fix(pay): refund wallet on withdraw reject and show pending history
...
Close the freeze/refund loop when admin rejects a balance withdrawal,
block concurrent open applications, and surface processing state plus
server-rendered withdraw history on the wallet card.
2026-07-16 16:28:56 +08:00
kate522
d57fc6f934
feat(user-center): points buy, balance withdraw, and asset record tabs
...
Add cash purchase of points (points_pay_s), wallet withdraw requests via
AKSRT_Withdrawal, Zibll-style dual-card layout with tabbed balance/points
ledgers, and admin switches for buy-points packages and balance withdraw.
2026-07-16 15:38:55 +08:00
kate522
0529ab5fb9
feat(user-center): Zibll-like assets charge, transfer, and dual cards
...
Complete wallet/points assets surface: sidebar mini dual cards, dual
asset row, balance charge packages REST + modal, transfer search/pay,
points-to-balance exchange, and payment success credit for recharge
orders.
2026-07-16 14:53:28 +08:00
kate522
8e0f9d989d
feat(user-center): add cash wallet balance separate from credits
...
Introduce AKSRT_Balance (user_meta aksrt_balance + balance_log) for
Zibll-like pay_balance wallet. User center assets panel shows wallet
and points; balance gateway/card-pass/refunds credit cash when enabled.
2026-07-16 13:44:37 +08:00
kate522
d34c954b83
feat(pay): card-pass redeem for VIP and balance (zibll-style)
...
Rewrite charge-card into typed single-use card_pass inventory with public redeem REST, user-center UI for balance/VIP, admin type-aware create/batch, and CAS mark-used fulfillment via Credits/activate_vip.
2026-07-14 20:13:46 +08:00