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>
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>
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.
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.
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.
Refresh orders.css for embedded user-center layout: segmented status
tabs, stat tiles, card hierarchy, action pills, after-sale list, and
dark mode; light HTML polish for title and empty state.
Register UC panel tab=orders with full order list/actions UI; route
aksrt_get_orders_page_url and /orders template to profile?tab=orders;
enqueue order assets when the UC orders tab is active.
Unify front-end order center across shop, content, VIP, recharge,
points, and plate-follow with type filters, stats, and type-aware
cards; keep shop-only fulfillment actions; ensure 权益与消费 entry URL.
Opening 余额功能 alone now enables cash-wallet pay (unless 余额支付 is explicitly off). Drop points-as-balance fallback, stop fake method injection, expose real wallet in cashiers, and honor auto_to_balance on recharge fulfill.
aksrt_get_new_post_url() returns '' without a page-submit assignment,
which previously skipped the post action and emptied the multi-type
chip. Fall back to post-new.php, keep a last-resort action list, put
radius/jb paint on the toggle, and force chip visibility CSS.
Paint classes (jb-*/but/radius) were on the transparent newadd wrapper,
so the multi-type 发布 toggle rendered invisible outside navbar-but-cluster.
Move them onto .newadd-btns__toggle and style the bare DOM path.
Drive toggle glyphs with html.dark/body theme classes only, drop
inline display styles that lost to !important CSS, and give the
float rail a solid surface + brighter ink in dark mode.
Match demo.zibll.com slide markup (a/span wrap, data-* attrs, --pc/--m height on .new-swiper), keyword chip classes, and height CSS so the top multifunc block renders like the official demo.
Rebuild header-slider card DOM/CSS against zib_header_slide + zib_icon_cover_card so shared/individual backgrounds, flex gutters, and badge icons match the reference theme.
Align main shells to main.container > .content-wrap + .sidebar siblings, drop
content-shell padding on dual-column hosts, and remove route flex overrides that
disabled the negative-margin sidebar math.