Skip to content

Session 页面增加侧边栏/顶栏元数据展示 + iframe 分屏布局 #31

@Svtter

Description

@Svtter

目标

当前访问 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: DENYContent-Security-Policy: frame-ancestors none,会导致加载失败。需要考虑 fallback 方案或文档说明

参考

  • 现有 session 路由:/s/{id}/{path...}internal/server/server.go
  • 元数据已有 API:GET /api/sessions/{id}/metadata(如已实现)或从 session.Store 读取
  • 首页模板参考:homePageTemplate(同文件中)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions