新闻详情

新闻详情

首页 / 资讯中心 / 详情

OpenProject 15.0.0 版本解析:活动时间线重塑、Emoji 评论反应与 SSO 管理界面

发布时间:2026/9/16 23:21:02来源:尧图网络
OpenProject 15.0.0 版本解析:活动时间线重塑、Emoji 评论反应与 SSO 管理界面
OpenProject 15.0.0 版本解析活动时间线重塑、Emoji 评论反应与 SSO 管理界面【免费下载链接】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/openprojectOpenProject 15.0.0 发布于 2024-11-13是该项目的又一重要主版本。本指南以官方发布说明为主体结合仓库源码系统解读 15.0 中三大核心变化基于 Primer 设计体系重写的工作包 Activity 标签含 Emoji 评论反应与实时加载、面向企业版的 SAML / OpenID Connect 管理界面、新的 Standard global role 全局角色同时覆盖项目列表快速操作表头、设计变量精简、自定义字段应用策略变更等改进。读完本文你将理解这些功能的操作路径、配置方法与底层实现原理并能据此规划升级与运维。重要功能变化总览15.0 是一个沟通与协作导向的版本官方发布说明将其核心改进概括为工作包活动Activity的全新时间线设计、Emoji 评论反应、通知中心的持续实时更新以及企业版新增的 SSO 提供方管理界面。同时该版本修复了超过 50 个 Bug官方建议所有用户升级。以下逐一展开这些功能变化及其源码实现。工作包 Activity 标签的全新时间线设计与实时加载新外观与核心交互15.0 中变化最大的是工作包的 Activity 标签。官方在 活动页面用户指南 中描述了其整体设计调整新特性包括评论输入框固定锚定在分屏区域底部成为常驻元素过滤器支持三种模式显示全部everything、仅显示变更changes only、仅显示评论comments only排序支持最新在上newest on top或最新在底部newest at the bottom两种顺序。值得注意的是排序偏好的修改方式保持了一致你既可以在 Account settings原 My Account中配置评论顺序也可以直接在 Activity 标签内切换两者会同步生效且切换结果应用到所有工作包。从源码看路由层面新增了独立的 活动标签控制器resources :activities, controller: work_packages/activities_tab其核心控制器 activities_tab_controller.rb 提供了index初始渲染、page_streams分页流更新、update_streams增量实时更新、update_filter切换过滤器、update_sorting切换排序等动作。其中排序通过Users::UpdateService写入当前用户的pref.comments_sorting偏好这与排序更改全局生效的行为完全对应。过滤器的三种取值由WorkPackages::ActivitiesTab::Filters.cast(params[:filter])解析见 set_filter并配合 Turbo Stream 局部替换整个标签页replace_whole_tab实现无刷新切换。实时更新机制轮询时间戳 Turbo Stream15.0 之前Activity 标签与通知中心需要用户手动刷新才能看到新内容15.0 之后新评论会在不重载页面的情况下直接出现通知中心的红点计数也会即时更新不再出现有更新是否重新加载的蓝色提示条。实现上后端通过WorkPackages::ActivitiesTab::UpdateStreamsupdate_streams.rb配合last_update_timestamp参数做增量轮询前端携带上次的服务端时间戳后端返回自该时间戳以来的变更流Turbo Streams由 polling_timestamp.rb 负责维护最后服务端时间戳的头信息。这一机制同样支撑了通知中心的持续更新官方关联的功能项是 Continuously update the notification center (wp/58253)是 15.0 中平滑沟通与信息流转目标的关键实现。Emoji 评论反应8 个精选表情与切换式服务操作方式与可用表情用户现在可以对工作包内的评论Journal 条目用 Emoji 做出反应。为保持界面清晰15.0 将可选表情限定为 8 个8 个表情在 emoji_reaction.rb 中以EMOJI_MAP常量定义键名表情Unicodethumbs_upU1F44Dthumbs_downU1F44Egrinning_face_with_smiling_eyesU1F604confused_faceU1F615heart❤️U2764 FE0Fparty_popperU1F389rocketU1F680eyesU1F440数据模型与服务实现EmojiReaction是一个多态模型emoji_reaction.rbbelongs_to :reactable, polymorphic: true即表情可以挂在任意可反应对象当前主要是工作包评论 Journal上并通过唯一性校验validates :user_id, uniqueness: { scope: %i[reactable_type reactable_id reaction] }保证同一用户对同一对象不能重复添加同一种表情。添加/移除表情采用**切换toggle**语义由 toggle_emoji_reaction_service.rb 实现若用户已对该 Journal 添加过相同反应则调用EmojiReactions::DeleteService删除否则调用EmojiReactions::CreateService创建。控制器动作 toggle_reaction 调用该服务成功后通过 Turbo Stream 局部更新对应的 Show 组件失败则渲染错误 Flash。评论条目的反应渲染由 AddReactions 组件 完成当前用户已反应的按钮使用:accent计数颜色与:default按钮样式高亮counter_color是否允许反应取决于当前用户是否拥有该工作包的add_work_package_comments权限current_user_can_react?。批量展示使用 GroupedQueries 的聚合 SQL按reactable_type, reactable_id, reaction分组统计reactions_count并通过json_agg聚合反应者列表emoji_reactions_group_selection_sql一次查询即可渲染某工作包全部评论的反应计数与人员。一个容易被忽略的实现细节after_create/after_destroy钩子会通过stamp_reactable_reactions_changed_at直接update_columns写入reactions_changed_at时间戳emoji_reaction.rb故意不触发 Journal 的updated_at变化从而避免反应操作把评论标记为已编辑。同时该时间戳可供轮询客户端检测反应的新增与删除。重要限制Emoji 反应不触发通知官方明确提示Emoji 反应不会触发通知。如果希望同事收到关于你反应的提醒请改用普通评论。这一点也体现在EmojiReaction与Notification模型的关联上——Notificationnotification.rb只关联recipient、actor、journal与多态resource并无表情反应类型的通知通道。通知中心的持续更新15.0 中通知中心Notification Center与 Activity 标签一样采用持续更新机制新通知直接出现不再弹蓝色提示条询问是否刷新铃铛图标旁的数字即时更新。该特性在发布说明中对应功能项 wp/58253。从路由可看到通知中心的入口get /my/notificationsroutes.rb。前端基于与 Activity 相同的轮询/流式更新思想实现无需手动刷新即可看到最新通知的交互属于 15.0 平滑沟通与信息流转目标的一部分。企业版SAML 与 OpenID Connect 提供方的管理界面从配置/环境变量到可视化 UI长期以来OpenProject 的 SAML 与 OpenID ConnectOIDC支持需要依靠 settings 或环境变量配置。15.0 为企业版用户提供了全新的管理界面管理员可以在Administration Authentication下自主配置 OpenID 提供方 与 SAML 提供方无需再联系 OpenProject 支持团队显著降低了集成门槛。配置完成后用户即可在登录页看到 SSO 登录选项相关功能还包括删除 SAML/OIDC 提供方时显示危险操作确认区danger zonewp/58451、允许通过 UI 设置omniauth_direct_login_providerwp/58437。技术实现与兼容性说明旧配置自动迁移UI 引入后原先基于 settings 的配置方式已标记为deprecated。升级时所有通过旧方式创建的提供方会被自动转换为 UI 元素。若升级后遇到配置问题请到Administration Authentication SAML providers / OpenID providers重新走一遍配置并确认设置。环境变量方式仍可用如果使用环境变量配置例如 Docker 部署或 Helm chart values该方式继续保留。通过环境变量创建的提供方仍会显示在 UI 中但被标记为只读read-only如需修改需要编辑环境变量并确保运行过 seed rake 任务rake db:seed系列。路由与控制器SSO 登录入口get /login/omniauth/:provider对应 omni_auth_start#show控制器 omni_auth_start_controller.rb登录回调则由 omni_auth_login_controller.rb 处理失败场景可跳到/sso的auth_source_sso_failedroutes.rb。OAuth 客户端回调Authorization Code Grant由 oauth_clients_controller.rb 提供callback与ensure_connection端点routes.rb。已知修复SAML UI 迁移在旧配置存在过期证书时会失败wp/58851、OIDC 提供方未显示 Redirect URIwp/59057等问题均已在 15.0 修复。更多技术细节可参阅 OpenID Connect 提供方接入指南 与 SAML 身份提供方接入指南。新的 Standard global role邮件地址可见性的全局控制权限变化与升级注意事项15.0 引入了一个新的默认Standard global role标准全局角色系统会自动且永久地授予所有用户。该角色包含多项可选权限其中核心新增的是View users mail addresses查看用户邮件地址。[!NOTE] 升级提示从 15.0 起用户账户设置中不再存在 Hide my email 复选框。默认情况下新的 Standard global role不勾选任何权限因此升级后邮件地址默认不可见。管理员请前往Administration Users and permissions Roles and permissions Standard global role决定是否全局勾选该权限也可以将该权限仅授予特定用户组或个别用户。权限启用后任意用户都能在自动补全场景例如从下拉列表选择工作包负责人 assignee中看到所有人的邮件地址。这一设计将隐私控制从个人层面提升到组织层面显示与否由组织统一决策而非个人自行决定。源码实现GlobalRole Role是 Role 的子类global_role.rb通过self.standard方法惰性创建内置的 Standard global rolewhere(builtin: BUILTIN_STANDARD_GLOBAL)不存在时create(name: Standard global role, position: 0)并标记builtin。角色查询按类型过滤GlobalRole.givable只返回type: GlobalRole的可授予角色。权限本身在 API 层有直接体现V3 用户代表器通过current_user_can_view_user_email?判断当前用户是否拥有全局view_user_email权限只有具备该权限时才会渲染缓存其他用户的邮件地址user_representer.rb 与 user_sql_representer.rb。发布说明对应的功能项是 Add separate permission to show email address in autocompleters (wp/56577)且默认角色为空Default standard role should be empty (wp/59227)确保升级后无权限被默认授予。项目列表的快速操作表头项目列表project lists中点击表头现在会弹出快速操作菜单除排序升序/降序外还可直接过滤、添加、移除或修改列。这些操作此前需要通过右上角的菜单按钮完成15.0 将其前置到表头显著缩短了操作路径。完整的项目列表配置说明见 用户指南配置项目列表视图。该特性对应功能项 Quick action table headers (wp/52147)并可配合 15.0 同期新增的 自定义项目列表与过滤选项 (wp/49687) 使用。简化设计设置减少侧边栏设计变量15.0 之前管理后台的设计配置需要定义大量变量过于复杂。从 15.0 起以下设计颜色不再可自定义Header font头部字体色Header font on hover头部字体悬停色Header border头部边框Main menu font主菜单字体色Main menu font when selected主菜单选中字体色Main menu font on hover主菜单悬停字体色Main menu border主菜单边框这些颜色现在会根据各自背景的亮度自动计算以保证足够高的对比度字体颜色只会是黑色或白色边框颜色仅在背景明亮时设置。该改动对应功能项 Reduce amount of design variables needed for the sidebar (wp/57153)。自定义字段不再自动应用到所有项目14.6 版本引入了批量启用/禁用自定义字段的能力多项目一次操作。基于此15.0移除了新自定义字段自动应用到启用该类型的全部项目的自动化行为以减少不必要的清理工作。如果你确实希望新字段应用到全部项目请前往Administration Custom Fields使用 Add projects 按钮手动批量添加。更多说明见 系统管理员指南自定义字段对应功能项 Custom field no longer added to all projects when added to a type (wp/46309)。其他界面与交互改进My account 更名为 Account settings个人菜单点击头像打开中的 My account 现更名为 Account settings以便与展示个人数据的 My Page、My Activities 区分wp/57685。工作包 hovercard 升级为 Primer 设计悬停工作包链接如描述或 Wiki 条目中的链接时新的 hovercard 展示类型、ID、状态、负责人及其头像等关键信息wp/58512会议中工作包与议程标题的完整显示会议模块中工作包标题现在始终完整显示无需点击跳转查看全文桌面端与移动端均适用wp/57671。其他细节Powered by CKEditor 位置移至左侧、暗色模式Dark mode移除 Beta 标签、状态设置页为 % Complete 字段补充说明文字等。重要技术更新与升级注意事项配置迁移确认升级到 15.0 后请重点核对以下事项SAML / OIDC 提供方旧 settings 配置自动迁移为 UI 元素请到Administration Authentication复查并确认设置环境变量方式仍可用但 UI 中只读修改后需运行 seed rake 任务。Standard global role默认无权限邮件地址默认不可见如需全局可见请在角色权限中勾选 View users mail addresses。自定义字段新字段不再自动覆盖所有项目按需使用 Add projects 批量添加。完整变更与 Bug 修复清单15.0 共修复超过 50 个问题涵盖工作包日期选择器间距、移动端模态滚动穿透、会议时间戳不一致、多值自定义字段排序、暗色模式下自定义文本控件配色、通知中心移动端冗余按钮、平行编辑冲突错误处理、慢迁移20230608151123_add_validity_period_to_journals等。完整清单含工作包编号见 docs/release-notes/15/15-0-0/README.md 中的Bug fixes and changes一节。贡献与致谢本版本的开发获得了科隆市City of Cologne的部分赞助社区成员在 Bug 报告与修复方面贡献良多Crowdin 上的翻译志愿者也为多语言支持做出了大量贡献。如果你想参与翻译可参考 翻译贡献指南。【免费下载链接】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),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Python面向对象编程:类的基础与高级特性详解 2026/9/17 0:00:18

Python面向对象编程:类的基础与高级特性详解

1. Python类的基础概念与核心语法在Python中,类(Class)是面向对象编程(OOP)的基础构建块。它允许我们将数据和操作数据的方法捆绑在一起,形成一个独立的逻辑单元。让我们从最基本的类定义开始讲起。1.1 类的定义与实例化定义一个类需要使用class关键字&a…

阅读更多 →
VHawk-Lint实战:FPGA静态代码检查如何补齐仿真验证的盲区 2026/9/17 0:00:18

VHawk-Lint实战:FPGA静态代码检查如何补齐仿真验证的盲区

做FPGA开发这些年,我最大的感受是:仿真跑得再欢,也不如代码规范本身不出事。去年接手一个通信基带项目,RTL代码量冲到几十万行,每次上板前集成仿真要跑大半天,结果ovl断言报出来的是个三年前遗留的多驱动—…

阅读更多 →
MATLAB手写紧束缚模型计算石墨烯能带结构 2026/9/17 0:00:18

MATLAB手写紧束缚模型计算石墨烯能带结构

简介:本资源是一套面向凝聚态物理与计算材料学初学者及研究者的石墨烯能带结构仿真MATLAB代码集,聚焦于理解石墨烯电子性质的核心——线性色散关系与Dirac点特征。代码基于紧束缚模型,完整覆盖晶格建模、布里渊区定义、薛定谔方程数值求解及能…

阅读更多 →
SpringBoot+Vue人事系统实战:解决HR数据断点与事务一致性 2026/9/17 0:00:18

SpringBoot+Vue人事系统实战:解决HR数据断点与事务一致性

简介:本资源是一套基于SpringBoot后端与Vue.js前端构建的完整人事管理系统,专为计算机专业本科生毕业设计及课程实践打造,面向正在完成毕设、期末大作业或项目实战训练的学习者。系统覆盖员工信息管理、考勤、薪资核算等核心HR模块&#xff0…

阅读更多 →
AWS无服务器应用开发指南:从Lambda到SAM的架构与实践 2026/9/17 0:00:18

AWS无服务器应用开发指南:从Lambda到SAM的架构与实践

从一份目录开始,重新理解AWS无服务器应用开发很多人学AWS无服务器,第一反应是去翻Lambda的API文档,或者找几个现成的SAM模板直接部署。这种学法不是不可以,但容易陷入一个怪圈:函数能跑通,却说不清楚整个架…

阅读更多 →
BrowserAct 多网页抓取指令丢失?TaoToken 这样改模型通道 2026/9/16 23:57:16

BrowserAct 多网页抓取指令丢失?TaoToken 这样改模型通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞