Commit Graph
799 Commits
Author SHA1 Message Date
kate522andClaude Fable 5 bfc4514476 chore(assets): migrate zibll img resources to assets/img
Copy Zibll's widget/visual reference assets into assets/img for
1:1 replication (Phase 5 resource migration):
- slider-bg.jpg, slider-layer-1.png, slider-layer-2.png
- user_t.jpg, avatar-default.png
- null*.svg (null, null-2, null-cap, null-love, null-money,
  null-order, null-post, null-search, null-set, null-user)
- thumbnail*.svg (thumbnail, thumbnail-lg, thumbnail-sm,
  thumbnail-null)
- medal/ (31 medal-*.svg badges)

These are reference placeholders to be progressively replaced;
no CSF framework ported. user-level-1..10.png already present.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 21:18:56 +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
Claude 98aeee3cc1 fix(phase1): backfill pagination, fix card stacking, unify archive render
- Backfill aksrt_render_pagination() into inc/helpers/aksrt-template-tags.php
  (numbered + load_more/infinite branches, \AKSRT\Settings\Settings facade)
- post-card.css: drop display:block !important from base .posts-item so
  .posts-item.card inline-block 3-col grid wins; scope <posts> block forcing
- archive-resources.php: replace hand-written .posts-row.ajaxpager +
  get_template_part loop with aksrt_render_post_list() + aksrt_render_pagination()

Refs .specs/plans/zibll-widgets-1to1.md Phase 1 (US2/US3/US5)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 19:05:43 +08:00
kate522andClaude Fable 5 5061977b72 plan: zibll widgets 1:1 replication
6-phase vertical-slice plan for full 1:1 replication of the Zibll
widget system into AKSRT. Covers pagination fatal fix, card-stacking
CSS fix, unified renderer, shared common-form layer adoption, and
per-category widget alignment (posts/users/slider/marketing/forum/shop)
plus resource migration and registration/block-editor parity.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 18:56:16 +08:00
kate522 59e550fd27 Merge pull request 'fix(ui): render user level icon inline beside the name' (#328) from fix/level-icon-inline into main
Reviewed-on: CYL/wordpress-theme-aksrt#328
2026-07-30 18:20:16 +08:00
Claude 4325ce0c1c fix(ui): render user level icon inline beside the name
The level (等级) badge was wrapping to its own line below the username and
rendering at the intrinsic PNG size in most surfaces. Centralize the badge
sizing after zibll's `.img-icon` (height: 1.1em, inline-block) in base.css so
every route gets the same compact inline badge, and keep the name row from
flex-wrapping.

- Add shared `.aksrt-user-level-icon / .aksrt-identity-medal` rule + nowrap name
  rows in base.css (loaded on all routes).
- Header dropdown: append the level icon next to the display name (was a
  separate badges row); constrain the name to ellipsis so the badge never wraps.
- User center profile header & author hero: render the level icon inside the
  <h1> name row; drop the duplicate level chip from the signals row.
- Single article author bar / after-box author card: nowrap the name row and
  size the level icon to 1.2em (was unstyled → intrinsic PNG size).
- Comments: inner <name> nowrap with a name clamp; medal sized to 1em.
- Consolidate the per-route `.aksrt-user-level-icon` duplicates in
  user-center/level.css and profile/layout.css onto the shared rule.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 18:13:41 +08:00
kate522 bdb01fa4a2 Merge pull request 'fix(user): accept core avatar hook payload' (#327) from worktree-fix-avatar-hook-user-type into main
Reviewed-on: CYL/wordpress-theme-aksrt#327
2026-07-30 11:06:20 +08:00
kate522 d5be2879d0 fix(user): accept core avatar hook payload 2026-07-30 11:05:25 +08:00
kate522 36ef332253 Merge pull request 'Worktree user level full chain' (#326) from worktree-user-level-full-chain into main
Reviewed-on: CYL/wordpress-theme-aksrt#326
2026-07-30 10:34:35 +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 b2e6045117 Merge pull request 'fix(user): move avatar upload to hover overlay' (#325) from worktree-user-avatar-system into main
Reviewed-on: CYL/wordpress-theme-aksrt#325
2026-07-29 14:34:47 +08:00
kate522 eed75d9f15 fix(user): move avatar upload to hover overlay 2026-07-29 14:17:52 +08:00
kate522 0463efee8e Merge pull request 'fix(user): normalize default avatar filename' (#324) from worktree-user-avatar-system into main
Reviewed-on: CYL/wordpress-theme-aksrt#324
2026-07-29 13:58:33 +08:00
kate522 224691e709 fix(user): normalize default avatar filename 2026-07-29 13:53:59 +08:00
kate522 cf62eee95d Merge pull request 'Worktree user avatar system' (#323) from worktree-user-avatar-system into main
Reviewed-on: CYL/wordpress-theme-aksrt#323
2026-07-29 13:50:00 +08:00
kate522 eeabe1d384 fix(user): harden native avatar uploads 2026-07-29 13:39:02 +08:00
kate522 e94437ef60 feat(user): add local avatar management flow 2026-07-29 13:35:17 +08:00
kate522 1b4ba8938a Merge pull request 'fix(identity): show certification in user admin' (#322) from worktree-fix-identity-certification-flow into main
Reviewed-on: CYL/wordpress-theme-aksrt#322
2026-07-29 12:47:33 +08:00
kate522 7dbbb2cdda fix(identity): show certification in user admin 2026-07-29 12:46:44 +08:00
kate522 8bc0f5a06b Merge pull request 'fix(identity): complete native certification review flow' (#321) from worktree-fix-identity-certification-flow into main
Reviewed-on: CYL/wordpress-theme-aksrt#321
2026-07-29 12:30:35 +08:00
kate522 2dfaa10798 fix(identity): complete native certification review flow 2026-07-29 12:25:58 +08:00
kate522 32658be87d Merge pull request 'fix(user-center): complete certification and order flows' (#320) from worktree-fix-user-center-order-certification-flow into main
Reviewed-on: CYL/wordpress-theme-aksrt#320
2026-07-29 10:46:20 +08:00
kate522 815e83bac0 fix(user-center): complete certification and order flows
Fix modal scroll ownership and certification modal styling, store evidence as Media Library attachments, reconcile missed provider callbacks, validate currencies, and complete digital fulfillment only after durable entitlement delivery.
2026-07-29 10:29:59 +08:00
kate522 b945c6e835 Merge pull request 'fix(user-center): embed official certification panel' (#319) from worktree-user-center-sidebar-wallet-redesign into main
Reviewed-on: CYL/wordpress-theme-aksrt#319
2026-07-28 15:26:04 +08:00
kate522 0a04c3e4cc fix(user-center): embed official certification panel 2026-07-28 15:22:09 +08:00
kate522 90bf3ee5ed Merge pull request 'fix(user-center): connect certification workflow' (#318) from worktree-user-center-sidebar-wallet-redesign into main
Reviewed-on: CYL/wordpress-theme-aksrt#318
2026-07-28 14:28:17 +08:00
kate522 d3bf75fbea fix(user-center): connect certification workflow 2026-07-28 14:17:18 +08:00
kate522 d6e5ab067c Merge pull request 'feat(user-center): redesign sidebar and wallet tips' (#317) from worktree-user-center-sidebar-wallet-redesign into main
Reviewed-on: CYL/wordpress-theme-aksrt#317
2026-07-28 13:53:57 +08:00
kate522 a7f3caec59 feat(user-center): redesign sidebar and wallet tips 2026-07-28 13:41:00 +08:00
kate522 82e71d1bf9 Merge pull request 'feat(user-center): deepen zibll parity and profile media' (#316) from worktree-user-center-zibll-complete into main
Reviewed-on: CYL/wordpress-theme-aksrt#316
2026-07-28 12:48:21 +08:00
kate522 e47ee1b029 feat(user-center): deepen zibll parity and profile media 2026-07-28 12:22:52 +08:00
kate522 c13f686cdc Merge pull request 'fix(homepage): unify runtime rendering contract' (#315) from fix/homepage-runtime-contract into main
Reviewed-on: CYL/wordpress-theme-aksrt#315
2026-07-28 02:54:48 +08:00
kate522 bcebd37807 fix(homepage): unify runtime rendering contract 2026-07-28 02:54:18 +08:00
kate522 bd6f55c42e Merge pull request 'feat: deepen single post experience' (#314) from worktree-frontend-single-deep-rebuild into main
Reviewed-on: CYL/wordpress-theme-aksrt#314
2026-07-28 02:10:12 +08:00
kate522 2086f938ed feat: deepen single post experience 2026-07-28 02:07:10 +08:00
kate522 a00db4538f Merge pull request 'fix(ip-geo): harden full-chain IP geolocation reliability' (#313) from worktree-ip-geo-fix into main
Reviewed-on: CYL/wordpress-theme-aksrt#313
2026-07-27 16:10:05 +08:00
kate522 59f5d5d98a fix(ip-geo): harden full-chain IP geolocation reliability
Capture real client IPs behind CDN, improve provider fallbacks and
negative cache, fix admin credential dependsOn for polling mode, and
map country labels to ISO codes for moderation GeoIP blocks.
2026-07-27 15:39:16 +08:00
kate522 c206928746 Merge pull request 'fix(orders): wire detail progress timeline and two-step cancel' (#312) from worktree-order-detail-progress-close into main
Reviewed-on: CYL/wordpress-theme-aksrt#312
2026-07-27 15:19:02 +08:00
kate522 ad40d9a7ca fix(orders): wire detail progress timeline and two-step cancel
Order progress was stuck on "订单创建" because timeline only read sparse
timestamp columns and status transitions didn't always stamp them.
Drive timeline from current status + related records, backfill lifecycle
timestamps on update_status, and replace window.confirm cancel with a
关闭订单 → 确认取消 button step in the detail modal.
2026-07-27 15:15:35 +08:00
kate522 64d0dc66da Merge pull request 'fix(orders): drop secondary "我的余额/会员/积分" link from detail modal' (#311) from worktree-order-center-list into main
Reviewed-on: CYL/wordpress-theme-aksrt#311
2026-07-27 14:00:58 +08:00
kate522 eac58f07bf feat(orders): polish detail modal layout and visuals
Restructure the order detail modal into status-tinted hero, product
card, info list with copyable order number, multi-item lines, and a
newest-first timeline. Refresh spacing, dark mode, and footer buttons.
2026-07-27 13:54:34 +08:00
kate522 e6eee91eb3 fix(orders): drop secondary "我的余额/会员/积分" link from detail modal
The user center already has a dedicated tab for these; showing the
secondary shortcut inside the order detail modal is redundant noise.
The view-model field is kept for other consumers.
2026-07-27 13:40:23 +08:00
kate522 0c3e33bed4 Merge pull request 'feat(orders): redesign detail modal — hero pill, no duplicate close' (#310) from worktree-order-center-list into main
Reviewed-on: CYL/wordpress-theme-aksrt#310
2026-07-27 13:37:15 +08:00
kate522 e47a3958fb feat(orders): redesign detail modal — hero pill, no duplicate close
- Remove bottom "关闭" button so the top-right ✕ is the single dismiss.
- Drop redundant 订单类型 row from modal body (already shown as card chip).
- Add hero strip with status pill + amount; unify dt/dd rows into a
  bordered card; tighten items list and add timeline rail.
- Refresh modal styling: rounded dialog, gradient header, hover-lift
  buttons, mobile-friendly rows.
2026-07-27 13:34:30 +08:00
kate522 1648df8457 Merge pull request 'feat(orders): order detail modal, list actions, use configured prefix' (#309) from worktree-order-center-list into main
Reviewed-on: CYL/wordpress-theme-aksrt#309
2026-07-27 13:13:15 +08:00
kate522 a1e35a4499 feat(orders): order detail modal, list actions, use configured prefix
Wire admin payment_order_prefix into order number generation (with 32-char
cap for gateways), make 查看 open a full order-detail modal with
status-aware footer actions, keep type badge top-left only, and right-align
unpaid list actions with countdown on the left.
2026-07-27 12:39:21 +08:00