$k, 'content' => $c];
}
$tagsStr = implode(' ', array_map(static fn($t): string => '#' . $t, (array)$editing['tags']));
}
if (!$blocks) {
// 新建时给一个空段落块打底(否则页面上一片空白,用户不知道从哪写)
$blocks = [['kind' => 'text', 'content' => '']];
}
/** 图片块内容 → [key, 宽度百分比]。内容形如 `abc123` 或 `abc123|50`。 */
$imgParts = static function (string $c): array {
$p = explode('|', $c);
$w = isset($p[1]) ? (int)$p[1] : 0;
if ($w < 20 || $w > 100) { $w = 0; }
return [trim((string)$p[0]), $w];
};
?>
= $editMode ? ($isEditing ? '改笔记' : '写笔记') : '看笔记' ?>
= e(substr((string)$editing['updated_at'], 0, 16)) ?>
· 作者 = e((string)($editing['author_name'] ?? '')) ?>
· 你的权限:= e(\App\Note::permWord($perm)) ?>
` 包:宽度可调(第 8 条),且要与正文有间距。
⚠️ 附件(`$editing['files']`)**排在正文之后、页面最下方** ——
用户原话「附件在最下方」。 */ ?>
= e($title) ?>
共享
默认只有自己看得到;共享出去给别人看或改
已共享给
= e(\App\Note::permWord((string)$s['perm'])) ?>
= e((string)$s['name']) ?>
还没有共享给谁。
而不是 data-* ——
属性里的引号/换行会被 HTML 实体化,读出来还得反转义一次;JSON 块原样读。 */ ?>