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>
|