目标
当前访问 session 页面(/s/{id}/...)是直接返回原始 HTML 文件,没有外壳。用户无法感知这个页面的元数据(分类、标签、文件名、上传时间等),也无法进行相关交互。
希望增加一个外壳层,在不影响原始内容展示的前提下,增强存在感和交互能力。
需求
桌面端 — 侧边栏
- 页面左侧显示侧边栏,右侧用 iframe 展示原始 HTML 内容
- 侧边栏显示以下元数据:
- 文件名(entry file name)
- 上传时间(created at)
- 分类(category)
- 标签(tags)
- 项目(project)
- 侧边栏宽度固定(如 240px),剩余空间全部给 iframe
- iframe 撑满右侧区域,原始内容不受影响
移动端 — 顶部栏
- 不显示侧边栏
- 改为显示紧凑的 header 顶栏
- 顶栏显示关键信息(文件名、标签),可折叠展开查看完整元数据
- header 下方用 iframe 展示原始内容
技术要点
- 当前
serveSession 直接 http.ServeFile,需要改为返回一个外壳 HTML 页面,内嵌 iframe 指向原始文件
- 需要新增一个 API 端点或利用现有路由来提供 session 元数据(JSON),供前端 JS 获取
- 响应式布局用 CSS media query 切换侧边栏/顶栏
- iframe 路径:原始文件仍通过现有路由提供,外壳页面是新增的一层
- 注意:iframe 中的 HTML 如果设置了
X-Frame-Options: DENY 或 Content-Security-Policy: frame-ancestors none,会导致加载失败。需要考虑 fallback 方案或文档说明
参考
- 现有 session 路由:
/s/{id}/{path...}(internal/server/server.go)
- 元数据已有 API:
GET /api/sessions/{id}/metadata(如已实现)或从 session.Store 读取
- 首页模板参考:
homePageTemplate(同文件中)
目标
当前访问 session 页面(
/s/{id}/...)是直接返回原始 HTML 文件,没有外壳。用户无法感知这个页面的元数据(分类、标签、文件名、上传时间等),也无法进行相关交互。希望增加一个外壳层,在不影响原始内容展示的前提下,增强存在感和交互能力。
需求
桌面端 — 侧边栏
移动端 — 顶部栏
技术要点
serveSession直接http.ServeFile,需要改为返回一个外壳 HTML 页面,内嵌 iframe 指向原始文件X-Frame-Options: DENY或Content-Security-Policy: frame-ancestors none,会导致加载失败。需要考虑 fallback 方案或文档说明参考
/s/{id}/{path...}(internal/server/server.go)GET /api/sessions/{id}/metadata(如已实现)或从session.Store读取homePageTemplate(同文件中)