前言

22 年 7 月下旬,公司原使用的研发协作平台 TAPD 在后台给我司发来了收费通知,将于自 9 月 1 日起结束试用,开始收费。约腾讯方面沟通报价得知一年需要大几十万(我司人数较多)。公司管理层评估决定迁移至 Redmine。本文记录了我们曾部署到 Redmine 的插件以及一些配置技巧,供大家参考。

环境

Redmine version:4.2.2.stable
Ruby version:2.7.4-p191 (2021-07-07) [x86_64-linux-musl]
Rails version:5.2.6
Environment:production
Database adapter:Mysql2
Mailer queue:ActiveJob::QueueAdapters::AsyncAdapter
Mailer delivery:smtp

主题

链接:GitHub - mrliptontea/PurpleMine2: A free Redmine theme for modern browsers

我们选用了 PurpleMine2 作为 Redmine 主题,主要是界面比较优雅,同时可以支持一定程度的自定义,我们将不同的跟踪标签进行颜色区分:

界面配置技巧

1. 问题列表界面

在项目中的问题列表界面,如果同时选择展现多个列(如多个自定义属性、问题内容)时,会出现因各列宽度未作定义而导致内容换行的问题,非常影响用户浏览,如下图:

这个问题可以通过对问题列表页面的 CSS 文件进行修改来解决:

我们使用的是 PurpleMine2 主题,所以修改的是:

redmine根目录/themes/PurpleMine2-master/stylesheets/application.css

找到表头的对应的列id,添加最小宽度设置即可:

table.list .table-list-header{min-width:80px;} #所有表头最少为80px
table.list th.subject{min-width:480px;} #标题最少为480px
table.list th.id{min-width:20px;} #问题id最少为20px
table.list th.checkbox{min-width:20px;} #问题的选择框最少为20px

更新后各列宽度将有最小值,可以拖动滚动条进行浏览:

2. 问题创建时间与更新时间的显示格式

在 Redmine 的问题详情页面,问题的创建时间与更新时间默认是以 XX 天之前的格式显示,在我们实际的工作场景中,我们认为这种显示不够直观,还需要去换算一下到底是几月几号创建/更新的,如下图:

解决方法为更新 redmine根目录/app/helpers/application_helper.rb 文件

-  def time_tag(time)
-    text = distance_of_time_in_words(Time.now, time)
-    if @project
-      link_to(text,
-              project_activity_path(@project, :from => --- User.current.time_to_date(time)),
-              :title => format_time(time))
-    else
-      content_tag('abbr', text, :title => format_time(time))
-    end
-  end+ def time_tag(time)
+    text = format_time(time)
+  end

同时,中文翻译对应修改 redmine根目录/config/locales/zh.yml 文件:

label_added_time_by: "由 %{author} 在 %{age} 添加"
label_updated_time: " 更新于 %{value} "
label_updated_time_by: "由 %{author} 更新于 %{age} "

更新后效果:

插件

1. customfield_checkbox_utility——版本:0.0.3

链接:GitHub - preciousplum/customfield_checkbox_utility

该插件主要功能是增强【用户】及【列表】格式的自定义属性功能,可以将原来编辑页面的下拉框或列表变为一个支持搜索的多选模块,如下图红框处。该插件可以配合【notify_custom_users】插件,通过自定义用户字段实现多个指派人/处理人的功能

2. notify_custom_users——版本:1.0.2

链接:https://github.com/Restream/notify_custom_users

该插件支持向【用户】格式的自定义属性发送问题更新的通知,我们将其与【redmine_work_wechat】企业微信通知插件配合使用,实现对问题中不同用户的信息推送。

3. redmine_ckeditor——版本:1.2.3

链接:http://github.com/a-ono/redmine_ckeditor

富文本编辑器,安装该插件后通过 Rest Api 向 Redmine 创建问题时,问题描述可以以 HTML 源码形式传入/编辑(支持图片、模版样式等),在线编辑时也支持将截图直接粘入,十分建议安装。

* 该插件与【redmine_mentions】插件冲突,无法在问题描述中 @ 到对应人员

** 若使用 Docker 多节点部署 Redmine,需要将“redmine/public/system/rich/rich_files/rich_files”路径持久化,否则插入的图片将有几率丢失

*** 启用截图粘贴功能需要在 Redmine 根目录 config 文件下新增 ckeditor.yml 文件,内容如下:

# CKEditor configurationallowedContent: true
bodyClass: "wiki"
removePlugins: "div,flash,forms,iframe"
forcePasteAsPlainText: false# HTML sanitizer configurationallowedProtocols:- afs- aim- callto- ed2k- feed- ftp- gopher- http- https- irc- mailto- news- nntp- rsync- rtsp- sftp- ssh- tag- telnet- urn- webcal- xmpp- data
allowedTags:- a- abbr- acronym- address- b- big- blockquote- br- caption- cite- code- dd- del- dfn- div- dt- em- h1- h2- h3- h4- h5- h6- hr- i- iframe- img- ins- kbd- li- ol- p- pre- s- samp- small- span- strike- strong- sub- sup- table- tbody- td- tfoot- th- thead- tr- tt- u- ul- varallowedAttributes:- abbr- align- alt- border- cellpadding- cellspacing- cite- class- colspan- datetime- dir- height- href- name- nowrap- reversed- rowspan- src- start- style- title- valign- width- xml:lang

4. redmine_issue_templates——版本:1.1.0

链接:https://github.com/agileware-jp/redmine_issue_templates

该插件支持针对不同跟踪标签,预设问题描述模板,可用于标准化问题的提交与编辑样式。支持管理员全局设定或针对单一项目池个性化配置。

该插件与【select_to_select2】插件存在冲突,启用【select_to_select2】插件后,在新建问题时会出行描述模板无法自动加载的 bug,解决方法请见下文。

5. redmine_issues_tree——版本:0.0.14

链接:https://github.com/Loriowar/redmine_issues_tree

该插件支持以树状的形式展现问题列表,但是因无分页功能,会在单一项目池内问题数量过多时导致页面极度卡顿,已弃用。

6. redmine_ldap_sync——版本:2.1.1.devel

链接:GitHub - thorin/redmine_ldap_sync: [UNMAINTAINED] A redmine plugin to synchronize both users and groups with an ldap server

该插件用于扩展 LDAP 授权登陆功能,可以定期同步用户数据。

7. redmine_logs——版本:0.2.0

链接:GitHub - haru/redmine_logs: Redmine logs plugin

主要用于管理员在管理后台查看、下载系统日志便于进行日志分析。

8. redmine_mentions——版本:0.1.1

链接:https://github.com/tainewoo/redmine_mentions

该插件支持使用人在编辑问题时 @ 到对应人员,被 @ 到的人将收到系统通知。该插件与【redmine_ckeditor】冲突,因此我们未作进一步使用与研究。

9. redmine_searchable_selectbox——版本:0.1.10

链接:https://github.com/ishikawa999/redmine_searchable_selectbox

该插件可使 Redmine 中自定义属性的下列框支持关键字搜索,功能与【select_to_select2】插件类似,但在多选情景下不够【select_to_select2】插件好用,已弃用。

10. redmine_smile_project_enumerations_custom_field_format——版本:1.3.15

链接:https://github.com/Smile-SA/redmine_smile_project_enumerations_custom_field_format

该插件支持各项目池个性化配置自定义属性的候选值,如管理员在系统级配置一个自定义属性“需求分类”,各项目池可以基于自身需要配置“需求分类”的候选值。

* 该插件的不足在于,自定义属性仍需要系统管理员配置后,各项目池管理员才可进行候选值的编辑。在网上有搜到一个付费插件:Redmine Project Specific Custom Field - Plugins - Redmine 功能更完善,可以直接在项目池维度创建自定义属性并编辑候选值,预算充足的朋友可以尝试。

11. redmine_work_wechat——版本:0.3.0

链接:tigergm/redmine_work_wechat

企业微信通知插件,当问题更新时可以推送信息到企业微信的内建应用,通知到问题的相关人员(与【notify_custom_users】插件配合)。推送的内容模板目前仍在研究中,目前通过修改推送模板加入了问题的最新状态的推送,但变更详情推送暂未能实现,如下图:

推送模板的修改地址为:

redmine根目录/plugins/redmine_work_wechat/lib/redmine_qy_wechat/patches/

corp_wechats_journals_patch.rb及issues_controller_patch.rb,在推送模板中对应位置加上{@issue.status}即可

@group_client.message.send_text(send_people_wx, "", "", app_id,"#{l(:msg_focus)} <a href=\'" + Setting.protocol + "://" + Setting.host_name + "/issues/#{@issue.id}\'>#{@issue.tracker} ##{@issue.id}: #{@issue.subject}</a> #{l(:msg_by)} <a href=\'javascript:void(0);\'>#{@issue.journals.last.user}</a> #{l(:msg_updated)} #{@issue.status}")

12. select_to_select2——版本:0.1.0

链接:GitHub - sf-cola/select_to_select2: This is a repository of select to select 2 which is a redmine plugin.下拉列表的功能增强插件,支持搜索候选值及在多选场景下列出已选择的值。

* 该插件与【redmine_issue_templates】插件冲突,解决方法为修改

redmine根目录/plugins/select_to_select2/assets/javascripts/slecttoselect2main.js

第 53 行,增加 elements[i].id == 'issue_template'

else if (elements[i].id == 'available_c' || elements[i].id == 'issue_template' || elements[i].id == 'selected_c') {

Redmine 部署分享 2022.10相关推荐

  1. hksi paper 1 香港证券资格考试卷一 备考经验分享(2022.10) 證券及期貨從業員資格考試

    2022.10.10鰂魚涌考场,47分过,简要分享一下备考经验. 备考时间: 总时间应该不到30h,集中在考前五天.我本身有金融背景,所以没有什么理解上的困难,很多知识点也都属于业务常识.但是朋友说他 ...

  2. 2022.10.17-10.23 AI行业周刊(第120期):工作中,你想担任什么样的角色?

    篇章一:工作角色 上周各个地方一路奔波,去了三个地方出差,进行项目沟通. 然后又外出产品宣传了两场,感觉角色一直在变换,技术.售前.产品. 因此也在想,未来3年后,我的工作角色是怎样的? 从15年毕业 ...

  3. 2022.10.9-10.16 AI行业周刊(第119期):相信坚持的力量

    篇章一:个人咨询 周六晚上的时候,接了一个粉丝的付费咨询,他硕士毕业将近两年,想基于目前的工作状态,咨询未来短期和长期的规划和想法. 他提到一个疑惑,因为他们公司算法工程师有将近30个人,除了本身的工 ...

  4. 国产服务器软件 LinWinHttp 重大更新 V1.3 Community Build 2022.10.29 发布,这次的更新有什么内容?

    国产服务器 LinWIn Http LinWIn Http 由萤火科技团队开发,专门用于国产操作系统以及 Linux 操作系统的一种开源 HTTP 服务器软件.具有快速部署.快速反应.便捷安全.上手简 ...

  5. 信奥中的数学:对数(2022.10.29)

    [仙童小学]你真的认识对数吗 [仙童小学]你真的认识对数吗_哔哩哔哩_bilibili 小学生对数学的理解 5年级 小学生对数学的理解 5年级_哔哩哔哩_bilibili [秒懂数学]对数运算难如狗, ...

  6. 千峰教育2218期2022.10.18日

    2022.10.18日 上课时间 早上8:50进直播间 9:00~10:20 10:40~11:50 13:50课程分享 自信 14:00~15:00 15:10~16:20 16:30~18:00 ...

  7. Python培训教程分享:10款超好用的Python开发工具

    学会Python技术后,我们在参加工作的时候如果能有辅助工具的话,那么会很大程度的提高我们的工作效率,那么Python都有哪些好用的开发工具呢?下面小编就为大家详细的介绍一下10款超好用的Python ...

  8. 部署Symantec Antivirus 10.0网络防毒服务器之六

    七.部署分发SYMANTEC客户端程序 客户端程序远程分发. 将要部署SYMANTEC客户端程序的计算机添加到右边. 局域网客户端全部安装完毕. 第一次那就手动更新病毒库吧,HOHO HOHO,服务器 ...

  9. Kubernetes1.13.1部署Kuberneted-dashboard v1.10.1

    参考文档 https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/#deploying-the-das ...

最新文章

  1. 转 [JAVA] 使用 common-fileupload 实现文件上传
  2. 针对IT人员的四月热点新书推荐
  3. SCCM 2012 R2---配置客户端发现方法和边界组
  4. oracle执行减法,oracle时间的加法和减法
  5. 整理Java相关的工具类Utils,持续更新中,建议收藏【目前更新至24】
  6. php模拟环境搭建,PHP环境搭建最新方法
  7. JAVAWEB(笔记)
  8. VS2008下最新X264(svn 2009.9)编译不过的解决办法
  9. CentOS 7使用yum安装MYSQL
  10. JavaEE Day10 JavaScript高级
  11. Nexus3 功能介绍
  12. 全国 259GB 离线天地图地名路网数据覆盖范围
  13. html报406错误,Ajax请求出现406的原因和解决方法
  14. 室内定位导航地图制作问题
  15. android 播放pdf文件格式,一个方法告诉你安卓手机如何打开PDF格式文件
  16. 事务日志备份文件达到 47G 大小,啥原因导致 ?
  17. app服务器指向dat文件,appdat-系统爱好者
  18. 二维码解码程序的两大难点问题
  19. python excel 插入图片并设置好大小
  20. mysql停电_MySQL断电后报错处理

热门文章

  1. WebRTC笔记之十六:腾讯云CentOS 7.6搭建Janus之编译安装
  2. jquery实现计算两个日期之间天数
  3. MAX6675应用注意事项
  4. 软件主管离职后非法获取海量客户信息牟利
  5. 大疆嵌入式笔试B卷20180718
  6. 广告播放量超600w,B站分区隐藏的恰饭机会你知道吗?
  7. Word文档(.docx) 转为 Markdown文档(.md)的一种方法 —— 一款word插件(Writage)
  8. mariadb pam_mysql_FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制
  9. DIV+CSS浮动布局
  10. vue+elementui+quill富文本框实现(富文本框最大化和最小化)