Commit Graph
580 Commits
Author SHA1 Message Date
kate522 d3eef19b95 fix(single): match the reference video cover height (bare ratio)
Zibll reserves +50px only for covers whose title overlays them
(image/slide via .single-cover/.single-cover-slide); the video cover
keeps its title in the footer below and uses the bare scale height
(.dplayer-scale-height). Drop the +50px from the video box, pin the
reference height matrix in the contract test, and refresh the stale
slide-action assertion in the toast contract.
2026-09-06 11:12:13 +08:00
kate522 51dd38163d fix(submit): keep sidebar visible on front submit page 2026-09-05 21:50:40 +08:00
kate522 49ffdc6ab2 fix(runtime): remove obsolete jQuery compatibility assets 2026-09-05 21:31:11 +08:00
kate522 d86147f406 fix(single): fill slide and video cover media like the image cover
Slide-mode images rendered at intrinsic ratio, top-aligned inside the
swiper chain (--pc-height:auto left .swiper-wrapper content-sized), so
the taller box showed a gap at the bottom and never center-cropped like
the image cover. The video cover had the same problem through
video-player.js (height:auto, capped at 70vh).

- aksrt_render_slider scale mode emits --pc-height/--m-height 100% so
  the wrapper/slide/img chain fills the ratio box and object-fit: cover
  center-crops inside it (same pattern as the .scale-height widgets)
- video-player.js renders the video at height:100% + object-fit:cover;
  with an undimensioned container height:100% degrades to auto,
  matching the previous behavior
- drop the dead .single-cover padding-bottom rules (every producer owns
  its height inline, and the rule squeezed the absolutely positioned
  slide inner) and the orphaned --single-cover-scale var in
  tokens.css/compat-vars.css/main.css/InlineStyleBuilder
- rebuild public bundles; extend the single-cover-height contract
2026-09-05 18:53:45 +08:00
kate522 4f2d17f6ee fix(single): align slide and video cover heights with image cover
The image-mode cover reserves +50px for the title/breadcrumb overlay
(calc(scale% + 50px)), but the slide cover wrapper was given a bare
inline padding-bottom by aksrt_render_slider, permanently defeating the
.cover-slide rule, and the video cover used a bare video_scale%.

- aksrt_render_slider: add scale_extra so scale mode emits
  calc(ratio% + extra); the single cover passes 50px so all three
  modes share one height formula
- drop the unreachable static slide fallback and function_exists guard
  (the helper is unconditionally loaded by inc/bootstrap.php), the
  always-true cover_url/ep_count conditions, and the dead --scale-ratio
  and inner swiper padding emitted in scale mode
- remove the dead cover CSS cluster with no producer: .single-cover-slide
  (main.css/main.min.css/cover.css), .single-cover-slider family
  (components/base.css), .single-cover-slide-wrap and .single-cover__*
  helpers (cover.css), and initSlideCovers in misc.js
- rebuild public bundles via tools/build-public-assets.mjs
- add single-cover-height-contract test covering the shared formula
  and the dead-code removals
2026-09-05 18:22:37 +08:00
kate522 05a6b6fc54 fix 更多栏目 2026-09-05 17:32:18 +08:00
kate522 1839150ecb fix(sidebar): collapse empty sidebar column on every scene
Sidebar visibility had two disconnected decisions: the body site-layout-*
class (via aksrt_is_show_sidebar_filter) only checked widget activity for
singles, while the homepage aside renderer skipped the column and
sidebar.php rendered an empty one. With the toggle on and no widgets, the
homepage kept a reserved gutter and squeezed the main content aside.

- collapse every scene to no-sidebar when the sidebar widget stack is empty
- resolve home_sidebar before the page branch so a static front page is
  checked against the zones the homepage renders
- guard the homepage aside with aksrt_is_show_sidebar() alone and drop the
  duplicate aksrt_homepage_has_sidebar gate
- early-return sidebar.php instead of rendering an empty column
- drop dead code: archive helper $preferred param, wp_is_mobile fallback,
  container--no-sidebar class, unreachable front-page fallback
- update post-visual-contract to pin the single visibility decision

Verification: php -l on all changed files; node --test
tests/widget-system/*.test.cjs 242/243 (the toast-contract failure is
pre-existing and unrelated).
2026-09-05 15:40:11 +08:00
kate522 0c4a0d18f4 fix(widgets): keep found rows for term aggregation post count
The aggregation card's N篇文章 meta reads found_posts, but paginate ''
disables SQL_CALC_FOUND_ROWS and found_posts comes back 0 on current
WordPress. The reference shows the term's total post count, so keep
found rows enabled for this internal query.
2026-09-05 12:32:09 +08:00
kate522 f5a7c7a833 fix(widgets): resolve term covers through the canonical category chain
The shared term cover helper read aksrt_cover_url/cover_url term meta,
keys this theme never writes, so 分类图文卡片 dropped every card and
分类聚合卡片 always rendered an empty cover box. Resolve covers the way
the rest of the theme does (aksrt_category_cover_id → latest thumbnailed
post in the term), and let the aggregation card fall back to the theme
placeholder while term cards stay hidden without a real cover.
2026-09-05 12:05:12 +08:00
kate522 b639d57c5b feat(widgets): replicate 12 reference widgets for full Zibll parity
- rewrite schemas for posts, tab_posts, oneline_posts, hot_posts,
  term_cards, term_aggregation, media_cards, combo_info, partners,
  recent_comments, posts_toc and slider_media_combo to mirror the
  modern reference modules field by field (options, defaults,
  dependencies, min/max/step, subheadings)
- port reference renderers: hot ranking with TOP badges, category
  aggregation card, graphic cover cards, partners CSS marquee,
  combo info cards with auto band palette, recent comment list
- rename 分类与标签聚合卡片 to 分类聚合卡片 and restrict it to
  categories (no tags/topics branch in this project)
- drop topics filter fields and the topics query branch; align
  orderby value domain with supported post meta
- add searchable sortable terms admin field type and spinner unit
  suffix rendering
- unify widget pagination and lazy loading on the REST client with
  the runtime-owned ias reveal trigger; remove the legacy
  post_ajax_trigger dual path
- align section-navs TOC with the reference contract (wznav ids,
  3-heading minimum, zib-widget box)
2026-09-05 11:28:00 +08:00
kate522 9dc278bd83 fix payment points 2026-09-04 23:35:19 +08:00
kate522 f3fcfe45da feat(submit): add user media library 2026-09-04 22:53:33 +08:00
kate522 44e165d34e fix(comments): align image upload with Zibll
Unify comment image upload settings, REST permissions, preview, progress,
and response handling while removing obsolete compatibility paths.
2026-09-04 19:52:56 +08:00
kate522 129432ae45 进行了小优化 2026-09-04 18:48:57 +08:00
kate522 05f40d7728 fix(email): set sender before PHPMailer init 2026-09-04 13:56:11 +08:00
kate522 4833053a5c fix(email): complete mail settings and templates 2026-09-04 12:06:42 +08:00
kate522 7308f055c7 fix(frontend): keep asset and homepage filters in DOM 2026-09-03 19:21:24 +08:00
kate522 5fd7c212ed fix(runtime): 按参考主题硬切换为 loader/main/auto_fun 单一 DOM 生命周期
- 删除 AksrtFrontend registry/rehydrate 双路架构及 build/public.js 拼包入口,
  前台唯一初始路径为 PHP 本地栈(jQuery 1.9.1 → Bootstrap 3.4.1)
  → loader_js(_win/aksrtData 唯一注入)→ tbquire(['main']) → runtime/main.min.js
- window.auto_fun = debounce(z_auto_fun, 100) 为唯一重扫入口;所有模块改为
  执行一次 + off/on('auto_fun.aksrt-*') 命名空间重扫,data/class 标记幂等
- 局部更新协议统一:HTML 注入 → post_ajax.ed → auto_fun();
  远程 modal → loaded.bs.modal → auto_fun();JSON 成功 → zib_ajax.success
- 灯箱恢复 Miniimgbox/imgbox 唯一 owner(imgbox-container、a[data-imgbox]、
  imgbox_data),删除 AksrtLightbox/data-aksrt-lightbox 第二实现及 CSS/overlay,
  _win.imgbox* 重新接上 post-display 设置
- 死代码清理:runtime 下 11 组被自有实现替代的旧模块副本、无消费 vendored 库、
  顶层 grade.min.js、revenue.js、无调用方的 aksrt_get_win_runtime_config(),
  以及 loader 中 16 条死 mapping
- PHP 入队改为本地栈 + loader_js,routed/widget/submit 依赖统一换绑;
  用户卡片发布按钮恢复 nav_user_newposts_btn 设置门控
- 测试对齐:新增 frontend-lifecycle-contract,重写 navigation/lazyload/toast/
  auth-source/comment/page-display/post-visual 等断言为目标架构契约

验证:node --test widget-system+navigation 223 通过 0 失败;
构建脚本重建 main/imgbox min 与 CSS bundles;改动 PHP php -l、JS node --check
全部通过;git diff --check 干净;credits 重入 harness 通过。
2026-09-03 12:44:31 +08:00
kate522 5984d4e42d fix(icons): 清理 FA4 残留图标类,统一为 Font Awesome 5 约定
- 通用 fa fa-X 前缀改为 fa fas fa-X(12 个生产文件)
- 重命名图标映射:fa-sign-in→fa-sign-in-alt、fa-envelope-o→far fa-envelope、
  fa-trash-o→far fa-trash-alt、fa-file-image-o→far fa-file-image、
  fa-dot-circle-o→far fa-dot-circle、fa-play-circle-o→far fa-play-circle、
  fa-pencil→fas fa-pencil-alt
- 修复 FA5 中不存在的 fa-pencil-square→fas fa-edit
2026-09-02 21:48:42 +08:00
kate522 ddf7c37556 feat(lightbox): 接入全站图片预览 2026-09-02 18:33:47 +08:00
kate522 ff4ec1eb43 feat(captcha): 打通人机验证 11 个场景的前后端完整链路
- 统一验证入口 aksrt_require_captcha(),返回 true|WP_Error,启用场景配置缺失时 fail-closed 拒绝
- 前端公共 API 重构为 window.AKSRTCaptcha(verify/collect/reset/run),单飞锁防并发重复验证,一次性 proof 绑定浏览器 cookie+场景+服务商+主机名
- challenge/exchange REST 端点:challenge 原子占用防票据放大厂商调用,增加频率限制
- 新增 OAuth bind pass:服务端签发 5 分钟一次性令牌,绑定用户+服务商+浏览器,微信扫码延迟消费
- 覆盖场景:评论、登录、注册、绑定第三方、绑定手机、找回密码、修改密码、更改邮箱、资料下载、签到、前台投稿
- 移除 Service 层重复验证与 _auth_code_verified/_defer_login 等客户端可伪造标志,删除下载共享 pass 死代码
- 修复腾讯 TC3 签名 scope、Cloudflare action/cdata/hostname 严格校验、阿里云验签错误码映射
- 后台 Schema 保存对 secret 字段做掩码/保留合并;导入导出过滤 aksrt_captcha_config
- 重建 public bundle 与 admin SPA;新增 captcha 运行时/安全/业务契约测试与 harness
2026-09-02 13:03:24 +08:00
kate522 d2e95acd75 进行了一些小优化 2026-09-01 18:43:21 +08:00
kate522 8eb62e712b fix(single): restore author follow controls 2026-08-31 13:12:45 +08:00
kate522 71444b139a 进行了一些小优化 2026-08-30 21:48:59 +08:00
kate522 4c62fda62b 进行了一些小优化 2026-08-30 20:20:31 +08:00
kate522 95540ea32c 文章详细页实现全局DOM加载 2026-08-30 20:02:19 +08:00
kate522 b161d6e5c8 文章详细页实现全局DOM加载 2026-08-30 19:25:53 +08:00
kate522 65fbf97099 评论区硬切换实现小修复 2026-08-30 19:04:41 +08:00
kate522 b8ef4d81a4 评论区硬切换实现 2026-08-30 17:34:29 +08:00
kate522 ed914d2eec 修复了一些小问题 2026-08-30 13:49:54 +08:00
kate522 780e1eba21 优化了一些问题 2026-08-29 22:03:48 +08:00
kate522 1d904e6532 优化了一些问题 2026-08-29 18:05:49 +08:00
kate522 af30159a03 优化了一些问题 2026-08-29 17:36:21 +08:00
kate522 88eb29c645 优化了一些问题fix(captcha) 2026-08-29 17:03:05 +08:00
kate522 b77926388f 进行了一些小修复 2026-08-26 22:23:52 +08:00
kate522 1d073ea293 进行了一些小修复 2026-08-26 21:59:47 +08:00
kate522 fbada8bd6a 进行了一些小修复 2026-08-26 19:51:31 +08:00
kate522 5c7fa38da8 进行了一些小修复 2026-08-26 19:04:28 +08:00
kate522 ee4e599f2d 进行了一些小修复 2026-08-26 18:25:42 +08:00
kate522 2cb78edabb 进行了一些小修复 2026-08-26 16:32:18 +08:00
kate522 992af2119d 进行了一些小修复 2026-08-26 15:36:56 +08:00
kate522 562beb15cf 进行了一些小修复 2026-08-26 15:29:37 +08:00
kate522 ae10b3d3fd 进行了一些小修复 2026-08-26 15:11:25 +08:00
kate522 d37c34f71c 进行了一些小修复 2026-08-26 14:21:32 +08:00
kate522 065a5bc99c 进行了一些小修复 2026-08-26 12:35:20 +08:00
kate522 411905f919 对小工具进行了一些修复 2026-08-26 09:30:40 +08:00
kate522 9b6088986a 修复了一些问题 2026-08-25 18:42:23 +08:00
kate522 3dbd196e06 修复了一些问题 2026-08-25 18:31:49 +08:00
kate522 c8d199a694 修复了一些问题 2026-08-25 18:22:30 +08:00
kate522 0109a59922 修复了一些问题 2026-08-25 18:11:26 +08:00