模块完整指南:发布、评论、关注与多级聚合展示)
OpenProject 新闻News模块完整指南发布、评论、关注与多级聚合展示【免费下载链接】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 开源项目管理软件中的新闻News模块从模块定义、权限模型与底层数据实现出发逐步覆盖浏览新闻 → 发布新闻 → 评论互动 → 关注订阅 → 编辑与删除的完整操作闭环并深入介绍新闻在**登录首页Landing Page与项目主页Project Home**两级聚合展示区的配置方式。读完本文你将掌握 News 模块的全部用户操作细节理解其基于view_news/manage_news权限、自动关注机制与 Widget 组件的底层实现原理能够直接在项目团队中落地一套公告 → 讨论 → 邮件通知的轻量信息发布流程。什么是 News 模块在 OpenProject 中News被定义为一个允许发布与使用新闻条目的模块。它的核心定位是向项目内所有成员传达通用话题——不同于工作包Work Package这类结构化任务对象新闻更接近轻量的公告/周报载体承担项目级信息广播的职责官方文档原文定义见 docs/user-guide/news/README.md。从数据模型看一条新闻在 app/models/news.rb 中具有以下关键特征归属关系belongs_to :project必须属于某个项目、belongs_to :author作者为User评论关系has_many :comments按created_at排序删除新闻时级联删除评论字段约束title必填且最长256 字符summary最长255 字符description可为空空值会被规范化为审计与搜索acts_as_journalized所有修改进入 Journal 历史、acts_as_searchable可搜索title、summary、description三个字段搜索按created_at日期排序附件支持acts_as_attachable查看附件需要view_news权限新增/删除附件需要manage_news权限可关注性acts_as_watchable且创建者在发布新闻后会被自动添加为关注者Watcher见 app/models/news.rb 的after_create :add_author_as_watcher回调。在项目左侧菜单中找到News入口后你会看到该项目全部新闻的列表默认**按创建时间倒序最新在前**排列——这对应模型中的newest_first作用域order(created_at: :desc)。浏览项目新闻并进入详情进入 News 模块后列表页展示每条新闻的标题、作者、发布时间与摘要若该新闻有评论标题旁会附带评论数如(3)。点击新闻的Subject标题即可进入详情页阅读全文列表渲染实现见 app/views/news/index.html.erb。列表页在底层由 app/controllers/news_controller.rb 的index动作驱动当前处于项目上下文时仅取该项目新闻project.news否则取当前用户可见的全部新闻News.visible并叠加News.latest_for(current_user, count: 0)count: 0表示不限制条数随后按分页参数渲染。该页面还提供Atom 订阅源index动作支持format.atom输出 RSS 订阅页面底部与head中均注入订阅链接对应index.html.erb中的other_formats_links与auto_discovery_link_tag方便用户用阅读器订阅项目新闻流。可见性规则一条新闻只有在用户具备view_news权限时才可见。模型层通过Project.allowed_to(User.current, :view_news)过滤app/models/news.rb控制器在取详情时同样走visible作用域未授权请求会被拒绝。发布新新闻Add a news entry只有具备manage_news权限的用户才能在项目内发布新闻列表页会依据该权限决定是否渲染添加新闻按钮见 app/views/news/index.html.erb。操作步骤在 News 模块列表页右上角工具栏点击Add news绿色主按钮在新窗口中依次填写三个字段表单实现见 app/views/news/_form.html.erbTitle标题必填最长 256 字符Summary摘要最长 255 字符带迷你 Wiki 工具栏支持基础格式化Description正文启用完整文本格式化with_text_formatting: true使用 OpenProject 富文本编辑器利用编辑器内置的格式化选项排版正文还可以在正文中嵌入 Macros宏例如工作包表格Work package table或工作包创建按钮Work package create button让新闻正文直接联动项目内的动态数据点击蓝色Create按钮完成发布。发布动作在服务层由 app/services/news/create_service.rb 执行继承BaseServices::Create并混入附件替换逻辑控制器create动作校验成功后重定向回项目新闻列表app/controllers/news_controller.rb。关键提示标题和摘要会被展示在项目主页的 News 区块以及 OpenProject 登录首页的 News 区域因此这两项应写得足够精炼、能让人一眼看懂新闻主题详细内容再放入正文。编辑与删除新闻编辑从新闻列表点击标题进入详情页后右上角会出现Edit按钮同样仅在具备manage_news权限时显示。点击后打开编辑表单可以调整标题、摘要和正文表单页面底部会保留显示原始条目内容作为对照修改完成后点击蓝色Save保存。底层由News::UpdateService完成更新app/controllers/news_controller.rb。删除在详情页右上角点击Delete按钮系统会弹出确认提示Turbo 确认对话框确认后由News::DeleteService执行删除随后返回新闻列表。由于新闻启用了 Journal 审计删除前的修改历史会保留在审计记录中app/models/news.rb。评论新闻新闻详情页的正文下方是评论区域。点击Add a comment链接打开评论输入框输入内容后点击蓝色Add按钮提交提交后你的评论会与其他评论一起显示在新闻描述下方。评论功能的技术实现要点评论作为多态Comment记录挂在新闻上评论内容同样支持 Wiki 格式化与预览app/views/news/show.html.erb提交与删除分别由 app/controllers/news/comments_controller.rb 的create/destroy动作处理删除评论仅限有权限的用户评论的排序默认按创建时间升序排列OpenProject 会根据用户个人偏好wants_comments_in_reverse_order?即评论最新在前偏好对列表执行reverse_order反转app/controllers/news_controller.rb。关注新闻条目Watch / Unwatch你还可以关注Watch某条新闻。作为关注者当该新闻被修改或有人新增评论时你会收到电子邮件通知。操作方式在新闻详情页右上角点击Watch按钮即可成为关注者再次点击Unwatch即可取消关注停止接收该新闻的通知。关注机制由acts_as_watchable提供app/models/news.rb详情页通过watcher_action_button渲染 Watch/Unwatch 切换按钮app/views/news/show.html.erb。值得注意的一个细节新闻作者在创建时已被自动设为关注者因此作者天然会收到自己新闻的评论/变更通知无需手动关注。登录首页的 Latest news 区块在 OpenProject 应用登录首页上设有Latest news最新新闻区块它汇总了你所有项目中当前用户可见范围内的最新新闻。点击某条新闻的标题会直接跳转到对应项目内的该新闻详情页。从源码看该区块由 app/components/homescreen/blocks/news.rb 渲染内部委托给Grids::Widgets::News并以limit: 3限制展示最新 3 条。可见性上完全复用News.visible(current_user)与newest_first作用域——也就是说首页看到的内容天然遵循你的项目权限跨项目聚合但不会泄露无权访问的项目新闻。项目主页的 News Widget除了登录首页你还可以把项目新闻放到**项目主页Project home**上。项目主页支持可定制化的 Widget 布局切换到Dashboard 标签页后点击绿色Widget按钮或悬浮在已有 Widget 上的图标在组件列表中选择News即可添加最新项目新闻卡片News widget 说明见 docs/user-guide/projects/project-home/project-widgets/README.md完整配置流程见同一文档的Project widgets overview小节。该 Widget 的底层实现位于 modules/grids/app/components/grids/widgets/news.rb默认展示最新 5 条新闻NEWS_LIMIT 5可通过limit选项覆盖项目上下文内仅取当前项目的可见新闻并按最新排序全局上下文则跨项目聚合并附带项目名渲染条件为project.module_enabled?(news)——即该项目的新闻模块必须在项目设置中处于启用状态否则 Widget 不会渲染。权限与适用前提小结操作所需权限备注浏览新闻、阅读详情view_news列表、详情、搜索、Widget 均受此限制发布 / 编辑 / 删除新闻manage_news相关操作按钮按权限条件渲染评论新闻评论创建权限news/comments控制器授权删除评论同样受控关注 / 取消关注登录用户即可作者创建后自动成为关注者项目主页 News Widget 展示项目启用新闻模块 用户view_news见module_enabled?(news)判断使用 News 模块前请确认① 项目设置中已启用News模块② 相关成员被授予包含view_news浏览或manage_news管理权限的角色③ 若希望关注者收到邮件通知需确保系统邮件通知功能已配置且用户开启对应通知渠道。至此从单条新闻的发布、讨论、订阅到项目主页与登录首页的聚合展示News 模块的完整工作流即可在团队中顺畅运转。【免费下载链接】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),仅供参考