Redmine 部署分享 2022.10
前言
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相关推荐
- hksi paper 1 香港证券资格考试卷一 备考经验分享(2022.10) 證券及期貨從業員資格考試
2022.10.10鰂魚涌考场,47分过,简要分享一下备考经验. 备考时间: 总时间应该不到30h,集中在考前五天.我本身有金融背景,所以没有什么理解上的困难,很多知识点也都属于业务常识.但是朋友说他 ...
- 2022.10.17-10.23 AI行业周刊(第120期):工作中,你想担任什么样的角色?
篇章一:工作角色 上周各个地方一路奔波,去了三个地方出差,进行项目沟通. 然后又外出产品宣传了两场,感觉角色一直在变换,技术.售前.产品. 因此也在想,未来3年后,我的工作角色是怎样的? 从15年毕业 ...
- 2022.10.9-10.16 AI行业周刊(第119期):相信坚持的力量
篇章一:个人咨询 周六晚上的时候,接了一个粉丝的付费咨询,他硕士毕业将近两年,想基于目前的工作状态,咨询未来短期和长期的规划和想法. 他提到一个疑惑,因为他们公司算法工程师有将近30个人,除了本身的工 ...
- 国产服务器软件 LinWinHttp 重大更新 V1.3 Community Build 2022.10.29 发布,这次的更新有什么内容?
国产服务器 LinWIn Http LinWIn Http 由萤火科技团队开发,专门用于国产操作系统以及 Linux 操作系统的一种开源 HTTP 服务器软件.具有快速部署.快速反应.便捷安全.上手简 ...
- 信奥中的数学:对数(2022.10.29)
[仙童小学]你真的认识对数吗 [仙童小学]你真的认识对数吗_哔哩哔哩_bilibili 小学生对数学的理解 5年级 小学生对数学的理解 5年级_哔哩哔哩_bilibili [秒懂数学]对数运算难如狗, ...
- 千峰教育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 ...
- Python培训教程分享:10款超好用的Python开发工具
学会Python技术后,我们在参加工作的时候如果能有辅助工具的话,那么会很大程度的提高我们的工作效率,那么Python都有哪些好用的开发工具呢?下面小编就为大家详细的介绍一下10款超好用的Python ...
- 部署Symantec Antivirus 10.0网络防毒服务器之六
七.部署分发SYMANTEC客户端程序 客户端程序远程分发. 将要部署SYMANTEC客户端程序的计算机添加到右边. 局域网客户端全部安装完毕. 第一次那就手动更新病毒库吧,HOHO HOHO,服务器 ...
- Kubernetes1.13.1部署Kuberneted-dashboard v1.10.1
参考文档 https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/#deploying-the-das ...
最新文章
- 转 [JAVA] 使用 common-fileupload 实现文件上传
- 针对IT人员的四月热点新书推荐
- SCCM 2012 R2---配置客户端发现方法和边界组
- oracle执行减法,oracle时间的加法和减法
- 整理Java相关的工具类Utils,持续更新中,建议收藏【目前更新至24】
- php模拟环境搭建,PHP环境搭建最新方法
- JAVAWEB(笔记)
- VS2008下最新X264(svn 2009.9)编译不过的解决办法
- CentOS 7使用yum安装MYSQL
- JavaEE Day10 JavaScript高级
- Nexus3 功能介绍
- 全国 259GB 离线天地图地名路网数据覆盖范围
- html报406错误,Ajax请求出现406的原因和解决方法
- 室内定位导航地图制作问题
- android 播放pdf文件格式,一个方法告诉你安卓手机如何打开PDF格式文件
- 事务日志备份文件达到 47G 大小,啥原因导致 ?
- app服务器指向dat文件,appdat-系统爱好者
- 二维码解码程序的两大难点问题
- python excel 插入图片并设置好大小
- mysql停电_MySQL断电后报错处理
热门文章
- WebRTC笔记之十六:腾讯云CentOS 7.6搭建Janus之编译安装
- jquery实现计算两个日期之间天数
- MAX6675应用注意事项
- 软件主管离职后非法获取海量客户信息牟利
- 大疆嵌入式笔试B卷20180718
- 广告播放量超600w,B站分区隐藏的恰饭机会你知道吗?
- Word文档(.docx) 转为 Markdown文档(.md)的一种方法 —— 一款word插件(Writage)
- mariadb pam_mysql_FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制
- DIV+CSS浮动布局
- vue+elementui+quill富文本框实现(富文本框最大化和最小化)