Commit Graph
428 Commits
Author SHA1 Message Date
kate522 51274fd00a feat(user-center): promote invite into standalone 推广中心 tab
Register a dedicated `promotion` dashboard panel gated by the existing
invite switches (credits + invite reward + invite registration), and move
the invite card out of the revenue tab so 收益中心 is pure earnings/withdrawal.

- src/User/Center.php: register promotion panel; revenue no longer depends
  on invite being on
- inc/helpers/user-center-renderers/profile-promotion.php: new panel body
  hosting the existing [data-aksrt-invite] card
- profile-revenue.php: drop the invite section; aksrt-user-center.php: drop
  unused show_invite_section context, add promotion to built-in tabs + view map
- repoint invite/promotion deep-link aliases from revenue to promotion across
  tab-url builder, tab resolver, runtime tabAliases, urls.php, and the
  revenue-JS enqueue gate
- sidebar-nav.php: add 推广中心 service entry; shell.css: entry icon color;
  sidebar-creator.php: reword revenue card
- UserRuntime.php: allow promotion in configurable tabs
2026-08-05 16:45:47 +08:00
kate522andClaude Fable 5 aa865e24e1 fix(modal): close rollout and async lifecycle gaps
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 02:31:41 +08:00
kate522andClaude Fable 5 5375ad6429 perf(modal): unify cancellable frontend modal flows
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 02:04:55 +08:00
kate522andClaude Fable 5 25ce1d8f43 refactor(badges): use modal REST routes
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 00:16:39 +08:00
kate522andClaude Fable 5 34150f3358 refactor(modal): remove legacy compatibility paths
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 00:06:37 +08:00
kate522andClaude Fable 5 d79b063bf9 feat(modal): add cancellable shared runtime
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 23:24:37 +08:00
kate522andClaude Fable 5 1f004aea46 fix(modal): align rollout schema contract
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 21:31:55 +08:00
kate522andClaude Fable 5 113a6bcab0 feat(modal): add rollout telemetry foundation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 21:23:04 +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 e991f1a0c6 fix(badges): complete full-chain badge circuit and preset icons
Close the full circuit break in the badge/medal system and replace
empty default icons with preset SVG assets so badges render out of
the box:

- Add aksrt_get_worn_medal_icon() helper that renders the worn medal
  image inline (with settings fallback when the Badges class is
  unavailable).
- Profile header (UC) now shows the worn medal icon beside the name,
  matching zibll's name row order (display_name → VIP → Medal → Level → Verify).
- Add .medal-icon / .aksrt-identity-medal vertical-align rules in UC shell.css.
- Extract SchemaUsers::default_medal_args() and preset 6 badges (rookie,
  checkin-30, writer, popular, annual-star, vip-member) with real icon
  URLs from assets/img/medal/ (medal-1/2/5/9/12/15.svg).
- Vue badge.js: add MEDAL_BASE helper + preset icons matching PHP defaults.
2026-08-04 10:36:50 +08:00
kate522 49c12b761f feat(users): merge promotion into revenue center 2026-08-03 15:38:17 +08:00
kate522 d138c05f77 feat(users): add inline promotion center 2026-08-03 13:40:54 +08:00
kate522 26d307056e feat(orders): redesign user order center 2026-08-03 12:54:58 +08:00
kate522 8c5b1555c9 refactor: flatten src/AKSRT → src (drop theme-identifier dir)
Move all domain folders from src/AKSRT/{Domain} to src/{Domain}; remap
Composer PSR-4 "AKSRT\\": "src/"; update audit script + README + ADR
paths; remove dead tools/build-psr4-map.php (scanned deleted inc/classes).
2026-08-02 22:06:06 +08:00
kate522 1d2505356e feat: remove shop feature (Phase 2)
Delete all shop domain classes, controllers, schema builders, templates,
JS/CSS, admin SPA pages, and shop-only payment classes (Shipping,
AfterSale, Discount). Remove shop-only DB table definitions (product_variant,
after_sale, order_shipping, card_key) from migrator and add their DROP
to uninstall.php. Clean up shared files:

- Remove aksrt_product CPT + taxonomies from Setup.php
- Remove shop rewrite rules/query vars/template redirect from SetupPart2.php
- Remove shop widget areas from SetupPart1.php
- Remove shop enqueues from ScriptsPart1b.php
- Remove sepakerator-aksrt-shop from SetupPart2.php
- Remove get_shop_settings facade (delete ForumShop.php, clean DomainGroups.php)
- Remove ORDER_PRODUCT_SHOP constant from DomainModel.php
- Remove Shop::class fallback branches from UserOrders.php, OrderCenterRest.php
- Remove shipping/after-sale branches from OrderRepositoryAdmin.php, PayMenus.php, PayOrders.php
- Remove shop product widgets from widgets-register.php
- Remove cart page from template-registry.php, routing.php, ScriptsPart2.php
- Remove cart UI from sidebar-nav.php, profile-orders.php, sidebar-orders.php
- Clean up order-center.js (remove rebuy/cartUrl/receipt/after-sale handlers)
- Remove aksrt_get_cart_page_url/product_page/product_edit from transactions.php
- Clean up aksrt_product_cat references in Coupon.php, PayCoupons.php

Shared payment/order/credits/content-pay stack fully retained.
2026-08-02 21:25:52 +08:00
kate522 2bbd7c01a3 feat: remove forum feature (Phase 1) 2026-08-02 20:02:44 +08:00
kate522andClaude Fable 5 b475263e76 feat: 后台身份认证记录支持删除
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:54:48 +08:00
kate522andClaude Fable 5 d8a1c35e9d fix: 识别阿里云 SubCode 通过状态
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:48:16 +08:00
kate522andClaude Fable 5 4332518c22 fix: 优化阿里云失败结果和操作显示
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:44:45 +08:00
kate522andClaude Fable 5 591902f680 fix: 记录阿里云空认证明细响应
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:41:42 +08:00
kate522andClaude Fable 5 c87ef77e8a fix: 解析阿里云查询结果对象
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:38:20 +08:00
kate522andClaude Fable 5 2e9d1d40ca fix: 保留阿里云认证会话 ID
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:35:33 +08:00
kate522andClaude Fable 5 f8985a70e5 fix: 阿里云未提交认证保持等待状态
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:28:03 +08:00
kate522andClaude Fable 5 5ca3638382 fix: 身份认证身份证号码校验
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:18:15 +08:00
kate522andClaude Fable 5 ea5269e0c6 fix: 阿里云 H5 认证提交 MetaInfo
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:13:29 +08:00
kate522andClaude Fable 5 70fc95ebe1 fix: 明确阿里云缺少核身链接错误
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 22:03:04 +08:00
kate522andClaude Fable 5 5731300056 fix: 增强阿里云认证响应调试
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 21:58:25 +08:00
kate522andClaude Fable 5 9bd63edfe6 fix: 移除阿里云无效认证链接类型参数
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 21:53:16 +08:00
kate522andClaude Fable 5 6c5837ea35 fix: 避免认证服务商默认值告警
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 21:47:28 +08:00
kate522andClaude Fable 5 93bf54500f fix: 本地环境跳过阿里云回调地址
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 21:38:36 +08:00
kate522andClaude Fable 5 333a7be64b fix: 认证失败后允许重新提交
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 21:34:02 +08:00
kate522andClaude Fable 5 63705dfde0 fix: 精简身份认证申请表单
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 19:15:01 +08:00
kate522 4de67311cc feat: 接入腾讯云与阿里云实人认证 2026-08-01 13:21:21 +08:00
kate522 92e445dbd4 feat: 添加身份认证服务商配置页 2026-08-01 12:06:55 +08:00
kate522 0fd5848884 重新设计用户/作者卡片小工具:消除多层卡片堆叠
- WidgetUserCard/WidgetAuthorCard 内层根节点去掉重复的 zib-widget widget 类
- 用户卡片补 classname=widget_aksrt_user_card 钩子
- widget-batch5.css 新增外层 .zib-widget 包裹层透明化规则(含首页侧栏覆盖)
- 内层 .aksrt-user-card/.aksrt-author-card margin-bottom 归零,间距由外层统一
- 删除 custom-amount.css 重复的 .aksrt-user-card* 段
- 删除 sidebar.css 失效的 .widget-user-card* 死代码
- author-actions.css .user-card.author.zib-widget → .user-card.author
2026-08-01 10:38:54 +08:00
kate522 3004310194 fix: 恢复认证图标悬浮文案 2026-07-31 11:48:57 +08:00
kate522 387b9e1929 fix: 修正后台等级图标与认证提示 2026-07-31 11:36:33 +08:00
kate522 06a03fd9cf fix: 始终展示已认证标识 2026-07-31 11:15:29 +08:00
kate522 ec63b446e8 feat: 固定个人与企业认证流程 2026-07-31 10:56:59 +08:00
kate522andClaude Fable 5 d1b44cbcd5 feat(forum/shop): phase 6 dynamic page sidebars + moderator fix
Phase 6 — forum/shop widget alignment + page-sidebar matrix + block
editor coverage:

- SetupPart1: add register_page_sidebars() replicating Zibll
  zib_page_register_sidebar() — registers page_{sidebar,top_fluid,
  top_content,bottom_content,bottom_fluid}_{ID} for pages opted in
  via the `widgets_register_container` postmeta (serialized area-key
  list), cached via wp_cache. page.php already consumes these via
  dynamic_sidebar. Assertion script
  $CLAUDE_JOB_DIR/tmp/assert-page-sidebars.php passes (opt-in
  mapping + page.php consumption + 63 registered widgets).
- WidgetForumPlateModerator: fix two fatal `obs_start()` typos
  (lines 75, 153) → ob_start() (was "call to undefined function"
  on the apply-modal and main payload paths).

Forum 9 + shop 3 widget business fields already align with Zibll
bbs/shop widget definitions (count/showposts/number, orderby
dims, style, plate filter, paginate, current_plate, tabs group);
REST routes forum-topics/forum-terms/forum-boards (WidgetAjax),
forum/frontend/widgets/topics (Forum.php),
shop/frontend/widgets/products (ShopController.php) all carry
permission_callback. WidgetProductOneline registered (line 127).
Block editor covers all 63 widgets via core/legacy-widget (WP 5.8+).
CLAUDE.md is gitignored (no in-repo inc/classes/widgets residue).

Acceptance: php -l clean; audit exit 0; SetupPart1=502 lines,
WidgetForumPlateModerator=248 lines. Phase 6 done-when marked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 21:38:36 +08:00
kate522andClaude Fable 5 cecc1a7b5e feat(widgets): phase 5 align marketing/decoration widgets with zibll
Align the 20 marketing/decoration widgets with Zibll field defs in
widget-produck.php / widget-more.php, focusing on the field-level
drift surfaced by the 1:1 audit:

- TagCloudWidget (widget_ui_tag_cloud): orderby → name/count/term_id
  (was count default), add order ASC/DESC, expand color palette to
  all 13 Zibll c-* keys (rand/c-hui/c-blue/-2/cyan/yellow/-2/green/
  -2/purple/-2/red/-2), number cap 100, default 20.
- WidgetBookmarkLinks (widget_ui_links_lists_2): add alignment
  (''/center/right) to form+update+render wrapper.
- FriendLinksWidget: expose orderby/order selects in form (already
  whitelisted) for bookmarks mode.
- ButtonsWidget (zib_widget_ui_buttons): whitelist pc_padding/
  m_padding/pc_width/m_width (were render-only), widen pc_gap/
  m_gap cap to 60 to match Zibll.
- RecentCommentsWidget (widget_ui_new_comment): count cap 50
  (was 20), whitelist outer_keywords.
- WidgetVideoPlayer (zib_widget_ui_dplayer): scale_height cap 200
  (was 100), whitelist muted + aspect_ratio.

Remaining 14 widgets (PricingPlans/Reviews/Faq/Stats/Highlights/
FeatureIntro/TiltCases/IconCards/IconCoverCards/CoverCards/
ComboInfo/PartnersScroll/TextTitle/Iframe) already match Zibll
field semantics (JSON/native group + obs_animation/palette/
pc_row·m_row/go_link); no drift to fix.

Acceptance: php -l clean on all changed files; audit exit 0;
all 21 widget files <=360 lines. Phase 5 done-when marked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 21:27:58 +08:00
kate522andClaude Fable 5 aa098fe870 feat(widgets): phase 4 align user/author/slider widgets 1:1 with zibll
Align the 5 user/author/slider widgets with Zibll CSF widget
definitions in widget-user.php / widget-slider.php and
options-module.php (add_slider / slide / zib_palette):

- WidgetUserCard (widget_ui_user): add Zibll button palettes
  (button_1_class/button_2_class via new palette_opts()/
  sanitize_palette() replicating CFS_Module::zib_palette c/b/jb)
  and button_2 type (home/center) → profile/center URL.
- WidgetAuthorCard (widget_ui_avatar): add show_button +
  button_1/button_2 (class/text/type) rendered only when the
  logged-in viewer is the author (zibll parity); expand orderby
  to modified/like/favorite.
- WidgetUserRanking (zib_widget_ui_user_ranking): rename field
  to Zibll `orderby` (default checkin_all_day) with the exact
  4 dims (checkin_all_day/checkin_continuous_day/points→credits
  /followed-user-count→followers) + `number` (was count); keep
  rank_by/count aliases for legacy instances; reword desc
  options to match Zibll labels.
- WidgetSlider (zib_widget_ui_slider): add direction/speed/
  spacebetween/scale_height+scale/autoplay to form+update+render,
  pass through to aksrt_render_slider (effect/loop/button/
  pagination/pc·m_height/interval already present); widen
  interval min to 0, height default to 400 (zibll pc_height).
- aksrt_user_card_query_posts: support like/favorite orderby
  (meta _aksrt_like_count / _aksrt_favorite_count) so the
  author/user-card more-posts strip honors the expanded orderby.

Acceptance: php -l clean on all changed files; audit exit 0;
all widget files <=383 lines. Phase 4 done-when marked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 21:16:55 +08:00
kate522andClaude Fable 5 3595ccbb44 feat(widgets): phase 3 align post widgets 1:1 with zibll fields
Align the 7 post/card widget business fields with the Zibll
CSF widget definitions in widget-posts.php:

- WidgetMainPosts/TabPostsWidget/WidgetOnelinePosts: add Zibll
  `order` (asc/desc) to build_query_args, form, update, REST
  payload and query strings; fix load_mode reading $instance in
  query_payload/widget().
- HotPostsWidget: add `target_blank` (form+update+REST+render
  href target), wire into query_payload base_qs.
- WidgetTermCards: expand range caps to match Zibll spinners —
  pc_row/m_row 1..12, height_scale 20..300, mask_opacity 0..90
  (form+update+render+REST).
- WidgetTermAggregation: add `order` (asc/desc) + `favorite`/
  `rand` orderby, expand count 1..20, fix `like` meta key to
  `_aksrt_like_count` (form+update+render+REST).
- WidgetAjax: propagate target_blank (hot-posts), order + caps
  (term-cards/term-aggregation) through REST instances.
- Fix WidgetMainPosts query_payload/widget() using $new_instance
  (undefined) instead of $instance for load_mode.

AKSRT pay_type (reading/download/gallery/video/vip/any) is the
semantic equivalent of Zibll zibpay_type (1/2/5/6).

Acceptance: php -l clean on all 7 files; audit-admin-contracts
exit 0; all files <=487 lines. Phase 3 done-when marked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 21:07:38 +08:00
Claude d975ff4ce6 feat(phase2): shared common-form layer + CommonWidgetFields trait for all widgets
- Extract Zibll CSF_Widget::params() common-field parity into
  inc/modules/widget-common.php (required by widgets-register.php to keep
  both files <1000 lines): subtitle, title_style(simple/big), title_highlight
  +color, title_link x3, title_link_style colors, sidebar_affix, show_type
  (all/only_pc/only_sm), show_id_type(show/hide), show_ids, animation_in,
  animation_repeat, layout_pin_pc/m, layout_bg(white/dark). Adds
  normalize_link/normalize_bg helpers, affix_attrs, common_wrapper_attr,
  render_title, animation_class. Back-compat normalizes legacy tokens
  (in_affix->sidebar_affix, pc/only_pc, include/exclude->show/hide).
- Add src/AKSRT/Widgets/Traits/CommonWidgetFields.php trait
  (render_common_form_section + update_common_fields).
- Wire all 57 widgets to use the trait; migrate the 16 hand-rolled in_affix
  implementations to shared sidebar_affix (fixes 6 latent bugs where
  in_affix was never persisted). SearchWidget intentionally skips the shared
  form section (its business show_type collides) but adopts the affix helper.
- widget_display_callback parity verified via tmp assertion script.

Refs .specs/plans/zibll-widgets-1to1.md Phase 2 (US1/US5)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 20:42:46 +08:00
kate522 d4946ee554 fix(user): close level parity gaps 2026-07-30 10:21:48 +08:00
kate522 a57b44bd61 fix(user): serialize level experience awards 2026-07-30 09:44:32 +08:00
kate522 20c19dfe31 feat(user): complete growth level chain 2026-07-30 09:38:45 +08:00
kate522 e94437ef60 feat(user): add local avatar management flow 2026-07-29 13:35:17 +08:00
kate522 7dbbb2cdda fix(identity): show certification in user admin 2026-07-29 12:46:44 +08:00
kate522 2dfaa10798 fix(identity): complete native certification review flow 2026-07-29 12:25:58 +08:00