Files
FamilyBook/templates/home/_card_books.php
T
laoyang 9a66068c33 v62:纪念日列表修正 / 分类图标与设置菜单 / 首页卡片体系
- 纪念日列表:display:flex 从 td 移到内层 div(写在 td 上会破坏表格列算法,
  表现为关联人列与其它列高度不一致);行内列序按表头对齐;
  改完再点「新建」不再带出上次修改的数据;文案改为「与我相关」「来自名册」;
  别人记的、把我挂成关联人的条目一并显示(split() 返回 hiddenIds,
  路由层据此过滤「接下来的日子」,与两张表同一套可见性)
- 分类图标:新增 app/AnnivIcon.php(17 个行内 SVG 图标 + 同 key 的 emoji
  供日历纯文本处使用,内网无 CDN 不用 FontAwesome);去掉「看日历」按钮;
  设置按钮改为菜单,第一项进 days/settings 独立页;分类可自选图标,
  列表徽标与日历条目都按分类显示
- 首页卡片:新增 app/HomeCards.php 与 templates/home_cards.php;
  8 格宽 × 高 2/4/6/8;首页拆成 templates/home/_card_*.php 共 8 个片段;
  home/cards 可改尺寸、调顺序、开关
2026-10-19 12:51:17 +08:00

48 lines
1.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* 首页卡片 · 读书(v62 新增)。
*
* 数据来自 `HomeCards::booksData()`:**在读优先**,其余按新加进来的顺序排(最多 6 本)。
*
* @var array $cardData['books'] 每项含 id/title/author/status/progress/chapter_count/cover_key
*/
$bkRows = (array)($cardData['books'] ?? []);
?>
<div class="hc-body">
<?php if (!$bkRows): ?>
<p class="empty-hint">书架还是空的。</p>
<?php else: ?>
<ul class="hc-bk-list">
<?php foreach ($bkRows as $b): ?>
<?php
$bkStatus = \App\Book::normalizeStatus((string)($b['status'] ?? 'wish'));
$bkCh = (int)($b['chapter_count'] ?? 0);
$bkPr = (int)($b['progress'] ?? 0);
$bkPct = $bkCh > 0 ? min(100, (int)round($bkPr / $bkCh * 100)) : 0;
?>
<li class="hc-bk">
<a class="hc-bk-cover" href="<?= e(url('books/show', ['id' => (int)$b['id']])) ?>">
<?php if (!empty($b['cover_key'])): ?>
<img src="<?= e(media_url((string)$b['cover_key'])) ?>" alt="" loading="lazy">
<?php else: ?>
<span class="hc-bk-ph" aria-hidden="true">📖</span>
<?php endif; ?>
</a>
<div class="hc-bk-main">
<a class="hc-bk-t" href="<?= e(url('books/show', ['id' => (int)$b['id']])) ?>"
title="<?= e((string)$b['title']) ?>"><?= e((string)$b['title']) ?></a>
<span class="small muted">
<?= e((string)($b['author'] ?? '')) ?>
<?php if ($bkCh > 0): ?>
· <?= $bkPr ?>/<?= $bkCh ?> 章
<?php endif; ?>
</span>
<span class="hc-bk-bar" aria-hidden="true"><i style="width: <?= (int)$bkPct ?>%"></i></span>
</div>
<span class="hc-bk-st is-<?= e($bkStatus) ?>"><?= e(\App\Book::statusWord($bkStatus)) ?></span>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</div>