拓冰建站拓冰建站
首页 / 资讯中心 / 正文

OpenProject 3.0.0 发布说明详解:新设计、无障碍、键盘快捷键与 Ruby 2.1 / Rails 3.2 升级

OpenProject 3.0.0 发布说明详解新设计、无障碍、键盘快捷键与 Ruby 2.1 / Rails 3.2 升级【免费下载链接】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 官方发布说明 docs/release-notes/3/3-0-0/README.md完整梳理 2014-03-07 发布的 OpenProject 3.0.0 版本的核心变更全新界面设计、无障碍能力、面向高级用户的键盘快捷键、自适应时间线报表、项目模板与安全强化并结合当前仓库中的源码实现如快捷键服务、用户偏好设置、升级指南解释这些特性从 2014 年版本延续到今天的演进脉络。读完后你可以准确理解 3.0.0 版本的历史定位、每一项功能变更的技术含义以及如何从旧版本安全迁移升级。版本背景OpenProject 3.x 系列的起点3.0.0 是 OpenProject 3.x 大版本系列的第一个版本发布于 2014-03-07其后经过 3.0.1 至 3.0.17 共十余个补丁版本迭代完整列表见 docs/release-notes/3/README.md。3.0.0 是一个具有里程碑意义的大版本它引入了全新的视觉设计体系、系统性的无障碍改进、键盘快捷键、统一的“工作包Work Package”概念和自适应时间线报表并在底层将运行时升级到 Ruby 2.1 与 Rails 3.2。下面按发布说明的原始脉络逐节展开并在每一节中补充当前仓库源码可查证的实现细节。New Design全新界面设计发布说明列出的设计变更包括全面采用图标字体icon fonts全新的页头header与侧边导航side navigation可折叠Contractible的侧边导航全新的工作包work package表单支持通过主题Themes进行设计定制。在今天的仓库中仍然可以追溯到这条设计演进线app/components/custom_styles/目录下包含 theme_selector_component.rb 与 design_color_dialog_component.rb 等 ViewComponent 组件对应“通过主题定制设计”这一 3.0.0 引入的能力页面头部则由app/components/header/下的组件实现。可以推断当年 3.0.0 确立的“页头 侧边导航 主题定制”的界面框架是其后十余年界面演进的直接前身。Major Accessibility Improvements重大无障碍改进3.0.0 发布说明中明确列出的无障碍改进包括支持对比度调整Contrast changes supported键盘焦点以蓝色边框高亮显示Keyboard focus highlighted by blue box键盘焦点顺序与操作流程顺序一致Keyboard focus order aligned with process order表单元素与其 label 建立关联Form elements linked to their labels屏幕阅读器支持多语言英语、德语Screen reader support。这些改进不是孤立的视觉调整而是为后续的键盘操作体验打下基础——“焦点顺序对齐流程顺序”正是键盘快捷键和屏幕阅读器导航能够成立的前提。当前仓库中这一方向仍在持续例如键盘快捷键服务中专门实现了focusNextItem/focusPrevItem方法见下文通过聚焦table.keyboard-accessible-list表格中的行来实现列表导航这正是“键盘焦点 无障碍列表”思路的延续实现。Keyboard Shortcuts for Power Users高级用户键盘快捷键发布说明指出3.0.0 为高级用户实现了键盘快捷键按键盘上的“?”键即可访问快捷键帮助。这一承诺在当前仓库中有完整、可查证的实现核心实现frontend/src/app/shared/directives/a11y/keyboard-shortcut.service.ts。该服务基于 Mousetrap 库绑定快捷键并在register()方法中先加载配置再检查用户是否禁用了快捷键public register():void { void this.configurationService.initialize().then(() { if (!this.configurationService.disableKeyboardShortcuts()) { Object.entries(this.shortcuts).forEach(([key, action]) Mousetrap.bind(key, action)); } }); }即快捷键默认启用但用户可以在个人偏好中关闭详见下文配置项说明。“?”键打开帮助弹窗服务中的?键绑定showHelpModal()其实现是打开PathHelper.keyboardShortcutsHelpPath()指向的帮助页面该页面由 app/controllers/help_controller.rb 中的keyboard_shortcuts动作渲染且标注了no_authorization_required!无需工作包查看权限即可访问。当前仓库中可确认的快捷键清单摘自shortcuts字典定义快捷键作用?打开键盘快捷键帮助弹窗g m跳转到“我的页面”global actionmyPagePathg o跳转到当前项目概览projectScopedprojectPathg w p跳转到当前项目工作包列表g w i跳转到当前项目 Wikig a跳转到当前项目活动Activityg c跳转到当前项目日历g n跳转到当前项目新闻n w p新建工作包g e/g p聚焦“编辑”/“预览”访问键对应元素d w p聚焦“详情”details访问键m聚焦“更多菜单”more menup聚焦项目搜索框s聚焦快速搜索框j/k在table.keyboard-accessible-list列表中聚焦下一行/上一行此外服务还定义了一组 accessKey 映射preview: 1, newWorkPackage: 2, edit: 3, quickSearch: 4, projectSearch: 5, help: 6, moreMenu: 7, details: 8通过查询[accesskeyN]选择器定位元素并聚焦或点击实现基于 HTMLaccesskey属性的辅助导航。从源码结构看g 方向这类 vim 风格的导航键与当年 3.0.0 承诺的“高级用户快捷键”一脉相承只是键位集合在后续版本中不断扩充。用户偏好开关快捷键并非强制开启。当前仓库中用户偏好字段disableKeyboardShortcuts的默认值为false见 frontend/src/app/features/user-preferences/state/user-preferences.store.ts并可通过两处表单勾选禁用个人外观设置app/forms/my/look_and_feel_form.rb 中的disable_keyboard_shortcuts复选框用户偏好表单app/forms/users/form/preferences_form.rb系统管理员可代用户调整。该字段被列入 app/models/permitted_params.rb 的许可参数白名单中保证经 API/表单提交时受控。Adaptive Timeline Reports自适应时间线报表3.0.0 将“问题issues”与规划元素统一合并为“工作包work packages”时间线报表能力因此得到系统性重构。发布说明列出的特性包括Issues 和规划元素统一为 work packages多项目报表Multi project reports按项目属性过滤Filter by project attributes历史规划对比Historic planning comparison支持自定义字段Support of custom fields过滤器中的自动补全select2新增对 Internet Explorer 11 的支持同时不再支持 IE 8性能改进。这一版本确立的“工作包 统一时间线”概念是此后 OpenProject 甘特图、时间线视图的基础。当前仓库中时间线/甘特能力已模块化modules/gantt/目录含 112 个 locale 文件与 gantt.gemspec 等承载甘特图模块其查询模型则位于app/models/queries/该目录下有 471 个文件覆盖各类工作包查询类型。可以推断3.0.0 中“多项目 按项目属性过滤 自定义字段”的报表能力如今以模块化、可组合的查询实现继续演进。Improved Work Package Functionality工作包功能改进发布说明中列出的工作包功能增强工作包自动补全Auto-completion for work packages自定义查询的快速选择Quick selection for custom queries在“我的”工作包汇总中加入负责人Responsible负责人可通过右键上下文菜单和批量编辑bulk edit分配通过更短的 URL 更容易地导航到工作包。其中“更短的 URL”一项与“负责人分配”两项至今仍是工作包编辑与协作的常用入口。结合仓库结构可以印证批量编辑与关联操作由app/controllers/work_packages/、app/forms/work_packages/12 个表单定义以及app/components/work_packages/156 个文件中的组件体系支撑上下文菜单与关联功能则在app/components/work_package_relations_tab/中可见。将工作包查询固定为侧边栏菜单项3.0.0 允许把常用工作包查询work package queries添加到侧边导航中并且这些查询页面可以重命名或删除。这一机制在今天的仓库中由菜单项体系实现app/models/menu_item.rb 定义了可持久化的菜单项模型app/menus/目录含work_packages/、projects/、portfolios/等子目录的菜单定义与 app/menus/submenu.rb 负责侧边子菜单的组织。从源码结构看当年“查询进侧边栏”的需求演化为了通用的、可按用户/项目定制的菜单项系统。Copy projects based on Templates基于模板复制项目可以基于已有项目/项目模板创建新项目可选择要复制的项目设置例如工作包。对应能力在当前仓库中仍有体现app/models/subproject_template_assignment.rb子项目模板分配模型与app/seeders/目录中的模板种子数据如 app/seeders/ 下的模板项目定义表明“项目模板 选择性复制设置”这一设计在后续版本中被进一步产品化而非 3.0.0 的一次性功能。Improved Project Settings项目设置改进改进成员配置member configuration改进并扩展类型type配置。当前仓库中成员配置由 app/models/member.rb、app/models/member_role.rb 及app/components/members/、app/contracts/members/中的契约共同维护项目类型配置则与app/models/project_type.rb、app/models/type.rb相关联。这印证了 3.0.0 中“成员配置”与“类型配置”两大项目级设置入口的延续性。Additional Account Security Features账户安全特性3.0.0 新增了一批账户安全能力发布说明原文逐项列出随机密码Random passwords通过强制包含指定字符来增强密码强度密码过期Password expiration禁止重用历史密码Ban of former passwords连续多次登录失败后自动封禁用户非活动状态下自动登出Automated logout on inactivity。这些策略构成了 OpenProject 密码策略体系的雏形。当前仓库中密码相关实现集中在 app/models/user_password/含 2 个文件与 app/models/user.rb密码策略校验逻辑可在此处继续查证自动登出与非活动超时则属于会话管理范畴与 app/models/sessions/ 下的会话模型相关。Migration to Ruby 2.1 and Rails 3.2底层运行时升级发布说明明确指出To ensure better performance, security and support OpenProject has been updated to a new version of Ruby (2.1) and Rails (3.2).The update fixes some important security vulnerabilities. For those vulnerabilities alone, you should no longer use OpenProject 2.4.即升级到 Ruby 2.1 / Rails 3.2 是为了性能、安全与支持周期且该升级修复了若干重要安全漏洞——仅凭这些漏洞官方即建议不要再使用 OpenProject 2.4。原发布说明还外链了 Ruby 2.1 与 Rails 3.2 各自的官方 release notes并指引旧版本用户阅读升级指南。从 3.0.0 到今天的运行时演进以当前仓库实际内容为准Ruby 版本3.0.0 时为 Ruby 2.1当前仓库 .ruby-version 声明为4.0.6且 Gemfile 第 37 行通过ruby File.read(File.expand_path(.ruby-version, __dir__)).strip从该文件读取版本约束Rails 版本3.0.0 时为 Rails 3.2当前 Gemfile 第 44 行声明gem rails, ~ 8.1.3, 8.1.3.1即Rails 8.1.3。这说明 3.0.0 所开启的“跟随上游升级运行时以获得性能与安全修复”的策略是该项目十余年持续执行的运维基调。如果你仍在使用 3.x 版本并想升级当前仓库的升级指南 docs/installation-and-operations/operation/upgrading/README.md 给出了官方约束与工具OpenProject 支持从一个大版本直接迁移到下一个大版本X → X1跨两个大版本X → X2必须中间安装 X1 版本过渡对 10.x 及以上的数据库 dump可使用逐步迁移脚本bin/migrate支持-n/--change-schema-name与-f/--format选项输出{input}-migrated.sql.gz或{input}-migrated.pgdump自动化“恢复 dump → 逐版本应用迁移”的流程对更早的版本8 之前升级指南指明需先使用 script/migration/ 下的migrate-from-pre-8.sh脚本做前置迁移指南同时强烈建议升级前先按备份文档完成数据库备份。从 3.0.0 到当前版本属于跨越多个大版本的情形因此实际升级路径必须逐大版本递进3.x → 4.x → … → 10.x → …上述脚本只能覆盖 10.x 之后的段落早期段落需要配合手动逐步升级。其他大量 Bug 修复发布说明最后提及“Substantial Number of Bug Fixes”3.0 发布伴随了大量缺陷修复。这一项在 3.x 后续补丁版本3.0.1、3.0.3、3.0.4、3.0.8、3.0.113.0.17中持续滚动各补丁版本的详细变更见 docs/release-notes/3/README.md 中的版本索引。小结OpenProject 3.0.02014-03-07的核心贡献可以概括为四条主线界面与定制图标字体、新页头与可折叠侧边导航、新工作包表单、主题定制——在当前仓库中以app/components/custom_styles/、app/components/header/等组件继续演化无障碍与效率焦点管理、多语言屏幕阅读器支持以及按“?”访问的键盘快捷键——当前实现见 keyboard-shortcut.service.ts、help_controller.rb 与用户偏好开关disable_keyboard_shortcuts数据模型统一issues 与规划元素合并为 work packages并带来多项目时间线报表、查询固定到侧边栏、模板化项目复制等工程能力安全与运行时随机密码、密码过期、失败登录封禁、非活动登出等安全特性以及 Ruby 2.1 / Rails 3.2 升级当前仓库已演进至 Ruby 4.0.6 / Rails 8.1.3。理解 3.0.0 的这四项变更是理解 OpenProject 从 2014 年走到今天的架构与产品决策的关键起点而旧版本的升级迁移则应以 升级指南 中“逐大版本迁移 备份优先”的原则执行。【免费下载链接】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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门