- 纪念日列表: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 可改尺寸、调顺序、开关
65 lines
3.5 KiB
PHP
65 lines
3.5 KiB
PHP
<?php
|
|
/**
|
|
* 首页卡片 · 近期任务(v62 从 templates/home.php 拆出来的)。
|
|
*
|
|
* 用户原话(v24 第 24 批 第 3 条):「右侧显示任务模块里面的数据,显示当前正在
|
|
* 进行当中的所有的任务,除了显示任务的标题之外,还要显示他的状态。比如说正在
|
|
* 进行中待确认等等。除了这之外,还要显示他所处的看板的名称。」
|
|
*
|
|
* 🔴 v53 第 2 条:待办也放进来,放在进行中的**下面**(不是混排)。
|
|
* ⚠️ 每行前面有复选框,点了就地完成(AJAX,不跳页);表单与脚本在 home.php 末尾
|
|
* 各一份 —— 那份**必须留着**,别跟着卡片一起删。
|
|
* ⚠️ 标题的颜色跟着**看板色**(不是任务模块的主题色),见 v32 第 4 条那条注释。
|
|
*/
|
|
?>
|
|
<div class="hc-body">
|
|
<?php if (!$tasks): ?>
|
|
<p class="empty-hint">没有进行中的任务,也没有待办。</p>
|
|
<?php else: ?>
|
|
<ul class="dash-list tk-list">
|
|
<?php foreach ($tasks as $t): ?>
|
|
<?php $late = \App\Task::isOverdue($t['due_at'] ?? null); ?>
|
|
<?php $tkColor = \App\Task::boardColorById((int)\App\Auth::familyId(),
|
|
(int)($t['board_id'] ?? 0) ?: null); ?>
|
|
<li class="dash-row tk-row" data-task-row="<?= (int)$t['id'] ?>"
|
|
style="--tk-c: <?= e($tkColor) ?>;">
|
|
<?php
|
|
$tkId = (int)$t['id']; $tkStatus = (string)($t['status'] ?? 'todo');
|
|
$tkBack = 'home'; $tkStatic = !\App\Auth::canWrite();
|
|
require __DIR__ . '/../_task_check.php';
|
|
?>
|
|
<span class="dash-dot" style="background: <?= e($late ? 'var(--red)' : 'var(--tk-c)') ?>;"></span>
|
|
<a class="dash-what" href="<?= e(url('tasks/show', ['id' => (int)$t['id']])) ?>"
|
|
title="<?= e((string)$t['title']) ?>"
|
|
data-fb-entry='<?= fb_entry_json([
|
|
'title' => (string)$t['title'],
|
|
'status_word' => \App\Task::statusWord((string)($t['status'] ?? 'todo')),
|
|
'note' => (string)($t['note'] ?? ''),
|
|
], url('tasks/show', ['id' => (int)$t['id']]),
|
|
\App\Auth::canWrite() ? url('tasks/edit', ['id' => (int)$t['id']]) : '',
|
|
[['截止', ($t['due_at'] ?? '') !== '' ? substr((string)$t['due_at'], 0, 16) : ''],
|
|
['看板', trim((string)($t['board_name'] ?? ''))]]) ?>'
|
|
style="color: <?= e($late ? 'var(--red)' : $tkColor) ?>;">
|
|
<?= e((string)$t['title']) ?>
|
|
</a>
|
|
<span class="kb-st is-<?= e((string)($t['status'] ?? 'todo')) ?> is-static">
|
|
<?= e(\App\Task::statusWord((string)($t['status'] ?? 'todo'))) ?>
|
|
</span>
|
|
<?php if (trim((string)($t['board_name'] ?? '')) !== ''): ?>
|
|
<?php $bColor = \App\Task::boardColor($t['board_color'] ?? null, (string)$t['board_name']); ?>
|
|
<span class="tk-board" style="--bc: <?= e($bColor) ?>;">
|
|
<i class="tk-board-dot" aria-hidden="true"></i><?= e((string)$t['board_name']) ?>
|
|
</span>
|
|
<?php endif; ?>
|
|
<?php if ((int)($t['child_total'] ?? 0) > 0): ?>
|
|
<span class="dash-tag"><?= (int)$t['child_done'] ?>/<?= (int)$t['child_total'] ?></span>
|
|
<?php endif; ?>
|
|
<?php if (($t['due_at'] ?? '') !== ''): ?>
|
|
<span class="tk-due"><?= e(\App\Task::dueWord($t['due_at'] ?? null)) ?></span>
|
|
<?php endif; ?>
|
|
</li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
<?php endif; ?>
|
|
</div>
|