近来将RedMine的源代码下下来进行研究,主要目的是研究它的Report功能是如何实现的
目前研究结果总结为几点:
1)Remine界面上支持PDF,CSV,HTML输出,但没有单独的报表运行中心,只有在Issue及Gant界面有报表输出功能
2)新建两个用户a和b,a用户在创建时默认语言选择“English”,b用户选择"Chinese(Simple)",进行报表打印时发现第一个用户打印出来的PDF报表中文显示为乱码,第二个用户打印的PDF报表中文显示正常
对于以上两点,进行了代码跟踪,得出了以下结论
1)报表输出的代码写在IssuesController,关键代码如下:
代码中很清晰看到CSV、PDF 的输出调用的是 issues_to_csv,issues_to_pdf(Gant界面的报表调用的是gant_to_pdf)
从名字可猜测Redmine中的报表打印并不通用,只是针对特定的报表进行了固定的输出处理
issue_to_pdf,issues_to_pdf,gant_to_pdf都包含在pdf.rb中,代码如下: