adamson 道士
注册时间: 2004-08-04 文章: 674 来自: Shenzhen
|
发表于: Sun 2005-11-13 01:45:54 发表主题: Re: 大家玩过 dotproject 吗? |
|
|
有些问题还是要靠自己。今晚花了一些时间看 dotproject 的源码,终于搞定 gantt chart 中文显示的问题。
--------------------------------------------------------------------
1. port 安装 dotproject 2.0.1
| 代码: | cd /usr/ports/www/dotproject
make install clean |
(记得加 Alias 至 httpd.conf; 要正常显示 gantt charts, 某些系统需将 php.ini 的 memory_limit 改为 64M)
2. 由于 dotproject 自带的 jpgraph 版本是 1.17, 有些问题, port 安装 jpgraph
| 代码: | cd /usr/ports/graphics/jpgraph
make install clean |
3. /usr/local/share/jpgraph/jpgraph.php 中 jpgraph 默认的 TTF_DIR 为 /usr/X11R6/lib/X11/fonts/truetype/; 为方便日后 portupgrade, 建议不要修改此默认的字体目录。jpgraph.php 有关 FF_SIMSUN 的定义是: FS_NORMAL 用的是 simsun.ttc; FS_BOLD 用的是 simhei.ttf。如果您想同时用到以上两种字体,则将 \window$\fonts\ 下的 simsun.ttc 和 simhei.ttf 上传到 /usr/X11R6/lib/X11/fonts/truetype/。其实,产生甘特图时,字体并不是很重要,我认为上传 simsun.ttc 就足够。这样,不要调用 FS_BOLD 便不会出现问题。
4. 将 jpgraph 更换为 port 版本
| 代码: | cd /usr/local/www/dotproject/lib/jpgraph
mv src src.x
ln -s /usr/local/share/jpgraph src |
(注意:http://dev.csdn.net/article/71/71883.shtm 所说的存在值得商榷的地方。请不要修改 src/jpgraph.php 中 function convert 有关中文转换的部分。)
5. 修改 /usr/local/www/dotproject/modules/projects/gantt.php
| 代码: | a. 将(表格的 header )
//$graph->scale->actinfo->SetFont(FF_ARIAL);
改为
$graph->scale->actinfo->SetFont(FF_SIMSUN,FS_NORMAL,9);
b. 将(表格的 caption)
$graph->scale->tableTitle->SetFont(FF_ARIAL,FS_BOLD,12);
改为
$graph->scale->tableTitle->SetFont(FF_SIMSUN,FS_NORMAL,12);
c. 将(表格的内文)
$bar->title->SetFont(FF_FONT1,FS_NORMAL,10);
改为
$bar->title->SetFont(FF_SIMSUN,FS_NORMAL,8);
d. 将所有 arialbd.ttf 替换为 simsun.ttc
e. 添加以下SetFont()
在 $bar->caption->SetColor('darkgray'); 上一行加
$bar->caption->SetFont(FF_SIMSUN,FS_NORMAL,8);
在 $bar2->title->SetColor( bestColor( '#ffffff', '#'.$p['project_color_identifier'], '#000000' ) ); 上一行加
$bar2->title->SetFont(FF_SIMSUN,FS_NORMAL,8);
在 $vline = new GanttVLine($today, $AppUI->_('Today', UI_OUTPUT_RAW)); 下一行加
$vline->title->SetFont(FF_SIMSUN,FS_NORMAL,9); |
6. 修改 /usr/local/www/dotproject/modules/tasks/gantt.php
| 代码: | a. 将
$graph->scale->SetDateLocale( $AppUI->user_locale );
改为
//$graph->scale->SetDateLocale( $AppUI->user_locale );
b. 将(表格的 header )
$graph->scale->actinfo->SetFont(FF_ARIAL);
改为
$graph->scale->actinfo->SetFont(FF_SIMSUN,FS_NORMAL,9);
c. 将(表格的 caption)
$graph->scale->tableTitle->SetFont(FF_ARIAL,FS_BOLD,12);
改为
$graph->scale->tableTitle->SetFont(FF_SIMSUN,FS_NORMAL,12);
d. 将(表格的内文)
$bar->title->SetFont(FF_ARIAL,FS_NORMAL,8);
改为
$bar->title->SetFont(FF_SIMSUN,FS_NORMAL,8);
e. 将(表格的内文)
$bar->title->SetFont(FF_ARIAL,FS_BOLD,8);
改为
$bar->title->SetFont(FF_SIMSUN,FS_NORMAL,8);
f. 将
$vline->title->SetFont(FF_ARIAL,FS_BOLD,12);
改为
$vline->title->SetFont(FF_SIMSUN,FS_NORMAL,9);
g. 将所有 arialbd.ttf 替换为 simsun.ttc |
dotproject 利用 | 代码: | | if (is_file( TTF_DIR."arialbd.ttf" )) | 这样的条件来 SetFont() 显然是不明智的; 我们最少可以这样改善一下:
将 arialbd.ttf 赋予一个变量,这样在不同的 locale 下替换起来更方便;另外, 若能结合用户的 locale 来选用字体则更为合理些。
(完)
----------------------------------------------------------------------
| adamson 写到: | http://www.dotproject.net
项目管理,用 php 写成。但安装后,gantt chart 无法正常显示中文。 |
_________________ don't get mad, get bacula. |
|