* 的选择器重新算一遍(视觉会跳一下)。 */ ?>
全天
$c): ?>
0) { $evEdit = url('calendar/event', ['id' => $evRef, 'embed' => 1]); } elseif ($evKind === 'movie' && $evRef > 0) { $evEdit = url('movies/edit', ['id' => $evRef, 'embed' => 1]); } elseif ($evKind === 'task' && $evRef > 0) { $evEdit = url('tasks/edit', ['id' => $evRef]); } elseif ($evKind === 'anniv' && $evRef > 0) { $evEdit = url('days/edit', ['id' => $evRef, 'embed' => 1]); } ?> ' style="background: ;" href="" title="">
$c): ?>
0) { $evEdit = url('calendar/event', ['id' => $evRef, 'embed' => 1]); } elseif ($evKind === 'movie' && $evRef > 0) { $evEdit = url('movies/edit', ['id' => $evRef, 'embed' => 1]); } elseif ($evKind === 'task' && $evRef > 0) { $evEdit = url('tasks/edit', ['id' => $evRef]); } // trip 的条目指向"某个旅程里的某段行程",编辑器在旅程详情页里 —— 这里不给「编辑」 elseif ($evKind === 'anniv' && $evRef > 0) { $evEdit = url('days/edit', ['id' => $evRef, 'embed' => 1]); } ?> data-seg="" data-fb-entry='' style="background: ; top: %; height: %; " href="" title=""> ↳
` 而不是把 JSON 塞进 data-*: data-* 属性里几千条会被 HTML 转义得又长又容易截断; JSON 里若出现 `` 也会截断 —— 所以下面统一走 json_encode 的 JSON_HEX_TAG(把 < > 转成 \u003C \u003E,永远不会提前闭合)。 ⚠️ 这是**渲染层**的便利数据,字段与 `data-fb-entry` 同一套(fb_entry_json), 所以浮层能沿用全部既有逻辑(详情/编辑/删除/来源判断)。 */ $dayData = []; foreach (($weeks ?? []) as $wk) { foreach ($wk as $cell) { if (!$cell['events']) { continue; } $items = []; foreach ($cell['events'] as $ev) { $evKind = (string)($ev['kind'] ?? 'custom'); $evRef = (int)($ev['ref_id'] ?? 0); $evEdit = ''; if ($evKind === 'custom' && $evRef > 0) { $evEdit = url('calendar/event', ['id' => $evRef, 'embed' => 1]); } elseif ($evKind === 'movie' && $evRef > 0) { $evEdit = url('movies/edit', ['id' => $evRef, 'embed' => 1]); } elseif ($evKind === 'task' && $evRef > 0) { $evEdit = url('tasks/edit', ['id' => $evRef]); } elseif ($evKind === 'anniv' && $evRef > 0) { $evEdit = url('days/edit', ['id' => $evRef, 'embed' => 1]); } $items[] = ['_rank' => \App\Calendar::displayRank($ev), '_time' => (string)($ev['time'] ?? '')] + json_decode( fb_entry_json($ev, (string)($ev['href'] ?? ''), $evEdit), true ); } $dayData[(string)$cell['date']] = $items; } } ?>
自己处理,JS 会排除掉)。 */ ?>
,点不开 = 完全看不到。 两处都已修:① `Calendar::displayRank()` 让派生条目排最后; ② 下面把 "+N 条" 换成**真按钮**,点开当天的全部条目浮层。 ⚠️ 保留 3 条不改成"全画":格子是固定高度(min-height:104px), 15 条硬塞会把月网格撑得不像月历;超出部分交给浮层看。 */ $cellEvents = $cell['events']; $shown = 3; $hiddenCnt = count($cellEvents) - $shown; ?> 0) { $evEdit = url('calendar/event', ['id' => $evRef, 'embed' => 1]); } elseif ($evKind === 'movie' && $evRef > 0) { $evEdit = url('movies/edit', ['id' => $evRef, 'embed' => 1]); } elseif ($evKind === 'task' && $evRef > 0) { $evEdit = url('tasks/edit', ['id' => $evRef]); } elseif ($evKind === 'anniv' && $evRef > 0) { $evEdit = url('days/edit', ['id' => $evRef, 'embed' => 1]); } ?> ' style="background: ;" href="" title=""> 0): ?> ` 兜住无 JS 的情况:直接跳那天的日视图 (日视图按时间网格铺开,不会再截断)。 */ ?>