- 纪念日列表: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 可改尺寸、调顺序、开关
44 lines
2.0 KiB
PHP
44 lines
2.0 KiB
PHP
<?php
|
|
/**
|
|
* 首页卡片 · 联系人(v62 新增)。
|
|
*
|
|
* 用户原话:「例如,联系人,可以有卡片,让用户选择显示几个联系人在首页上。」
|
|
* ⇒ 张数由卡片设置里的「显示 N 个」决定(`HomeCards::contactsData($familyId,$me,$n)`);
|
|
* 卡片高度不够时内部滚动 —— 不留一个"被截断但看不出来"的列表。
|
|
*
|
|
* ⚠️ 只列**我的名册**里的人(含别人分享给我的),不是全家所有人 —— 首页是"我的"。
|
|
*
|
|
* @var array $cardData['contacts'] ['rows'=>array,'total'=>int]
|
|
*/
|
|
$ctRows = (array)($cardData['contacts']['rows'] ?? []);
|
|
$ctTotal = (int)($cardData['contacts']['total'] ?? 0);
|
|
?>
|
|
<div class="hc-body">
|
|
<?php if (!$ctRows): ?>
|
|
<p class="empty-hint">名册里还没有人。</p>
|
|
<?php else: ?>
|
|
<div class="hc-people">
|
|
<?php foreach ($ctRows as $p): ?>
|
|
<?php /* 头像 + 称呼(`person_chip` 自带底色与"我该怎么叫他")。
|
|
⚠️ 这里用块级排列而不是一行一个 pill:卡片可能很窄(宽 2),
|
|
pill 会挤成一列文字。 */ ?>
|
|
<a class="hc-person" href="<?= e(url('people/show', ['id' => (int)$p['id']])) ?>"
|
|
title="<?= e(person_name($p)) ?>">
|
|
<?php if (!empty($p['avatar'])): ?>
|
|
<img class="hc-person-av" src="<?= e(media_url((string)$p['avatar'])) ?>" alt="">
|
|
<?php else: ?>
|
|
<span class="hc-person-av hc-person-tx"
|
|
style="background: <?= e(person_bg($p)) ?>; color: <?= e(person_fg($p)) ?>;">
|
|
<?= e(mb_substr(person_name($p), 0, 1, 'UTF-8')) ?>
|
|
</span>
|
|
<?php endif; ?>
|
|
<span class="hc-person-nm"><?= e(person_name($p)) ?></span>
|
|
</a>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
<?php if ($ctTotal > count($ctRows)): ?>
|
|
<p class="small muted" style="margin:8px 0 0">共 <?= $ctTotal ?> 人,这里显示 <?= count($ctRows) ?> 位。</p>
|
|
<?php endif; ?>
|
|
<?php endif; ?>
|
|
</div>
|