OpenProject 9.0 版本发布全解析:看板视图、工作包模板与 My page 工作包组件
2026/9/17 23:50:11 网站建设 项目流程

OpenProject 9.0 版本发布全解析:看板视图、工作包模板与 My page 工作包组件

【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject

导读

本文以 OpenProject 官方 9.x 系列发布说明(docs/release-notes/9/README.md 及 9.0.0 至 9.0.4 各补丁版)为主体,系统梳理 OpenProject 9 引入的核心新特性——看板(Board)视图、工作包模板、My page 工作包组件——并向下兼容梳理 9.0.1 ~ 9.0.4 的修复重点与安全补丁(CVE-2019-17092)。读者读完本文,既能掌握 9.x 各版本的功能清单与升级注意点,也能借助仓库源码理解看板模块的权限体系与实现原理。

一、OpenProject 9.0 主版本(2019-06-06):三大核心新特性

OpenProject 9.0 的发布说明(docs/release-notes/9/9-0-0/README.md)将其核心价值概括为三点:引入看板视图以支持 Kanban/Scrum 敏捷管理、支持为工作包类型定义模板以快速创建预定义结构的工作包、以及允许每个用户在自己的 My page 上添加自定义工作包视图。

1.1 看板视图(Board view,Enterprise 附加功能)

看板视图是 OpenProject 9 新引入的模块,允许以 Scrum 和 Kanban 风格进行敏捷项目管理:

  • 以状态列呈现:可以将不同工作包状态显示为列(类似 Kanban 看板),并在看板中快速更新工作包状态;
  • 自定义基础看板:可以定义使用自定义列名的基本看板;
  • 以版本为列:也可以将版本(Version)显示为列,例如用于规划路线图(roadmap)。

发布说明特别强调:由于看板展示的同样是工作包——与工作包表格(work package table)一致——你可以轻松地将传统项目管理与敏捷管理结合使用,例如在甘特图中排期、再到看板视图中处理任务。该功能需要 Enterprise cloud 或 Enterprise on-premises 版本;社区版用户若想试用,可申请企业版试用许可。

从仓库源码结构看,看板是一个独立的 Rails Engine 模块(modules/boards/lib/open_project/boards/engine.rb),注册为openproject-boards插件。其项目级权限被拆分为两个:

  • show_board_views:查看看板(对应boards/boards控制器的index/show/split_view动作),依赖view_work_packages权限;
  • manage_board_views:管理看板(对应index/show/new/create/destroy动作),依赖manage_public_queriessave_queries权限。

这两项权限均在project_module :board_view下声明,并依赖工作包跟踪模块(dependencies: :work_package_tracking)。这意味着看板本质上是一层基于工作包查询(Query)的视图封装——这正是 9.0.3 中“拥有manage_boards但无manage_public_queries权限的用户可以创建错误看板列”(#30426)这一缺陷的根源所在。

从服务层看,modules/boards/app/services/boards/base_create_service.rb 揭示了看板创建的关键实现:新建看板时会先通过Queries::CreateService创建一个public: true的工作包查询(Query),再把查询 ID 关联到网格(Boards::Grid,继承自 grids 模块),并以row_count: 1column_count: 4初始化网格行列数。同时根据params[:attribute]区分两类看板:

  • basic:网格类型为free(自由列,即发布说明中“自定义列名的基础看板”);
  • 其他值:网格类型为action,并按属性生成对应列(状态、版本、受理人、子项目、子任务等)。

对应地,modules/boards/app/services/boards 目录下提供了status_board_create_service.rbversion_board_create_service.rbassignee_board_create_service.rbsubproject_board_create_service.rbsubtasks_board_create_service.rb等具体实现,分别对应状态看板、版本看板、受理人看板、子项目看板与子任务看板,印证了发布说明中“状态列为列”“版本为列”的两种主要形态。

1.2 工作包模板(Work package templates)

9.0 支持为工作包类型定义模板:模板定义后,会在创建该类型(如 bug)的新工作包时自动显示在工作包描述中,从而快速创建信息相似的新工作包,并减少录入错误。模板在“工作包类型配置”(work package type configuration)中设置。

从当前仓库看,模板机制依赖 OpenProject 的类型系统:工作包类型定义在 app/models/type.rb(以及 app/models/type_variant.rb 等扩展),工作包则通过 app/models/work_package.rb 关联类型;模板描述本质上作为新工作包描述区的预填内容,与工作包创建流程(app/services/work_packages/create_service.rb)配合生效。

1.3 My page 上的工作包组件(Work package widget)

在 My page 上,每个用户可以添加工作包组件,并自定义要展示哪些工作包。可以按工作包属性进行过滤(filter)和分组(group),还支持在组件中显示甘特图。这一特性让每个用户的个人首页(app/components/my 与 app/controllers/my_controller.rb)成为可定制的工作台。当前仓库的 my_page 模块(modules/my_page)延续了“每用户自定义页面组件”的网格化设计思路。

1.4 更新后的工作包表格与易用性改进

  • 工作包页面中,受理人(assignee)现在直接以头像(avatar)形式显示;工作包类型选择交互也做了更新。
  • 可以直接在会议(agenda / minutes)中添加附件(如图片)。
  • 在全局工作包表格中创建工作包更简单:选择类型后,项目菜单中只列出已启用该类型的项目。
  • 过滤器和工作包属性支持自动补全(auto-completion)。

二、补丁版本演进:9.0.1 → 9.0.4 修复要点

9.x 系列共发布了 4 个补丁版本,发布说明均建议用户升级到最新版。

2.1 OpenProject 9.0.1(2019-06-07)

主要修复(docs/release-notes/9/9-0-1/README.md):

  • Fixed:Wiki 目录(TOC)无法正确渲染标题 [#30245];
  • Fixed:会议议程中文件区块重复出现 [#30291];
  • Fixed:按“类型”高亮的行导致表格文字不可读 [#30298];
  • Fixed:无法复制项目且报错信息有误 [#30309];
  • Fixed:入门导览的深色背景未覆盖整页 [#30314];
  • Fixed:点击 My page 链接时出现 JavaScript 错误 [#30343];
  • Fixed:甘特图中“添加关联”的高亮显示不正确 [#30354];
  • Changed:工作包视图滚动条样式化 [#30304];
  • Changed:通过 CSS 改进成本报告的打印视图 [#30305];
  • Changed:确保附件重新插入前 PostgreSQL 迁移已完成 [#30352]。

2.2 OpenProject 9.0.2(2019-06-13)

本版重点修复相对 URL 根(relative_url_root)部署场景下的问题(docs/release-notes/9/9-0-2/README.md),例如部署在domain.example.org/openproject路径下的安装:

  • Fixed:设置relative_url_root的打包安装中 Sass 编译失败 [#30372];
  • Fixed:设置relative_url_root时无法创建新看板 [#30370];
  • Fixed:Wiki TOC 标题渲染问题 [#30245](延续修复);
  • Fixed:Chrome 在访问 S3 存储上的图片页面时被登出 [#28652];
  • Fixed:My page 上的 OpenProject Logo 未跳转到落地页 [#30376];
  • Fixed:PDF 导出第一页后被截断 [#29929]。

2.3 OpenProject 9.0.3(2019-07-23)

9.0.3 是修复量最大的补丁版(docs/release-notes/9/9-0-3/README.md),覆盖看板、甘特图、工作包、成本报告等多个模块:

  • Changed:自定义字段搜索 [#29756];防止在同一看板上协作的用户产生冲突 [#30403];子工作包变更不再发送邮件通知 [#30532];
  • Fixed(摘录):版本字段闪烁 [#30356];看板缺少翻译 [#30367];初始编辑后工作包描述未更新 [#30373];甘特图中父工作包显示不正确 [#30388];里程碑类型工作包无法删除日期 [#30390];已关闭版本中的工作包提示可编辑状态却无响应 [#30396];部分日期字段显示错误语言 [#30400];SVN 修订版文本引用不生成链接 [#30415];无manage_public_queries权限的用户可创建错误看板列 [#30426];看板列表未按字母排序 [#30444];无法切换到工作包列表的层级模式 [#30514];复制工作包报错 [#30518];甘特图中仅含开始日期的工作包排期跳动 [#30554];德语环境下成本报告与预算中的逗号/句点颠倒 [#30574];仅有add_work_packages权限时行内创建无效 [#30589];无法关闭工作包 [#30590];看板侧边栏链接失效 [#30595] 等。

2.4 OpenProject 9.0.4(2019-10-02):安全修复版

9.0.4 是安全修复版本(docs/release-notes/9/9-0-4/README.md),修复CVE-2019-17092

在 9.0.4 之前及 10.0.2 之前的 10.x 版本中,OpenProject 的项目列表存在 XSS 注入漏洞:由于错误信息处理不当,远程攻击者可通过sortBy参数注入任意 Web 脚本或 HTML。

  • 受影响版本:≤ 9.0.3、10.0.1
  • 修复版本:9.0.4、10.0.2

漏洞由 SEC Consult Vulnerability Lab 的 David Haintz 发现并负责任地披露。9.0.4 的修复说明同时佐证了 9.0.3 的发布日期(2019-07-23)在元数据中标注为release_date: 2019-07-23(与 9.0.3 相同),实际安全补丁发布时间以官方公告为准。

三、升级到 OpenProject 9.0 的注意事项

官方发布说明(docs/release-notes/9/9-0-0/README.md)针对升级给出明确指引:

  • Enterprise cloud 用户:已自动运行在 OpenProject 9.0 最新版本上,无需额外操作;
  • 本地(on-premises)安装用户:执行升级前需注意若干小的变更,请参阅升级指南。

此外,9.0.2 的修复内容特别提示:如果使用相对 URL 根部署(如domain.example.org/openproject),请务必升级到 9.0.2 以上,以解决 Sass 编译失败与无法新建看板两个安装级问题;9.0.4 的安全修复则建议所有 ≤9.0.3 或 10.0.1 的安装尽快升级。

四、从源码结构看 9.0 特性的后续演进

结合当前仓库结构,可以推断 9.0 引入的看板与 My page 工作包组件已成为 OpenProject 长期保留的核心能力:

  • 看板模块(modules/boards)至今仍包含完整的控制器、服务、合约(modules/boards/app/contracts/boards/create_contract.rb)、网格模型(modules/boards/app/models/boards/grid.rb)以及功能测试(如 modules/boards/spec/features/action_boards/status_board_spec.rb、modules/boards/spec/features/board_management_spec.rb),测试用例覆盖了“仅有查看看板权限”“完整看板权限”等场景,与 9.0.3 修复的权限缺陷一一对应;
  • My page 组件继续由 modules/my_page 承载,延续“网格 + 组件”的可定制个人工作台模式;
  • 工作包类型与模板相关代码集中在 app/models/type.rb 与 app/models/work_package.rb,与工作包创建服务(app/services/work_packages/create_service.rb)共同构成模板功能的运行时基础。

五、9.x 系列版本一览

版本发布日期核心内容
OpenProject 9.0.02019-06-06看板视图、工作包模板、My page 工作包组件、工作包表格改进
OpenProject 9.0.12019-06-07多项 UI 与功能缺陷修复
OpenProject 9.0.22019-06-13修复 relative_url_root 部署下的 Sass 与看板创建问题
OpenProject 9.0.32019-07-23大规模缺陷修复(看板、甘特图、工作包、成本报告等)
OpenProject 9.0.42019-10-02安全修复:CVE-2019-17092 XSS 漏洞

六、总结

OpenProject 9.0 标志着该项目在“传统项目管理 + 敏捷管理”融合上的重要一步:看板视图将工作包以 Kanban/Scrum 形式呈现,同时与甘特图、工作包表格无缝衔接;工作包模板降低了批量录入的重复成本;My page 工作包组件则把个人工作台从静态页面升级为可过滤、可分组、可展示甘特图的自定义面板。随后的 9.0.1 ~ 9.0.4 补丁版本在稳定性、部署兼容性与安全性上持续收口,尤其是 9.0.4 修复的 CVE-2019-17092 XSS 漏洞,提醒所有使用 ≤9.0.3 或 10.0.1 的部署尽快升级。对于希望从源码层面理解看板机制的开发者,建议从 modules/boards/lib/open_project/boards/engine.rb 的权限注册与 modules/boards/app/services/boards/base_create_service.rb 的查询-网格关联逻辑入手。

【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询