1.4.002 的專案甘特圖問題修正過程 (in Ubuntu 7.10)

edited 十月 2013 in egroupware
1. 下載 jpgraph-2.2 ,解壓縮到 /var/www ,改名為 /var/www/jpgraph
2. 打開 /var/www/jpgraph/src/jpgraph_ttf.inc.php ,找到下面程式碼
elseif( $aFF === FF_CHINESE ) {
	    if( !function_exists('iconv') ) {
		JpGraphError::RaiseL(25006);
//('Usage of FF_CHINESE (FF_BIG5) font family requires that your PHP setup has the iconv() function. By default this is not compiled into PHP (needs the "--width-iconv" when configured).');
	    }
	    return iconv('BIG5','UTF-8',$aTxt);
	}
可以整個刪除,雖然不刪除也沒差,注意括弧等符號
3. 同一個檔案,找到
FF_CHINESE 	=>   array(FS_NORMAL	=>CHINESE_TTF_FONT, 
				  FS_BOLD	=>'', 
				  FS_ITALIC	=>'', 
				  FS_BOLDITALIC	=>''),
改成
FF_CHINESE 	=>   array(FS_NORMAL	=>CHINESE_TTF_FONT, 
				  FS_BOLD	=>CHINESE_TTF_FONT, 
				  FS_ITALIC	=>CHINESE_TTF_FONT, 
				  FS_BOLDITALIC	=>CHINESE_TTF_FONT),
4. 找一個中文字型的 ttf 檔案放到
egroupware/projectmanager/inc/ttf-bitstream-vera-1.10 中,或是像下面這樣建個連結
ln /usr/share/fonts/truetype/cwtex/center/cwming.ttf
cwming.ttf 是來自 opendesktop 的字型
http://www.opendesktop.org.tw/
5. 打開 /var/www/jpgraph/src/jpg-config.inc.php ,改這個項目:
DEFINE('CHINESE_TTF_FONT','cwming.ttf');
後面就是中文字型的檔名,根據自己狀況調整
6. 打開 egroupware/projectmanager/inc/class.ganttchart.inc.php ,找到這一行:
if ($this->gantt_char_encode) $text = preg_replace('/[^\x00-\x7F]/e', '"&#".ord("$0").";"',$text);
在前面加兩個斜線:
//if ($this->gantt_char_encode) $text = preg_replace('/[^\x00-\x7F]/e', '"&#".ord("$0").";"',$text);

這樣應該就可以了 :)

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=2877

評論

  • edited 一月 2008
    我在 Fedora Core 底下這樣做不行耶,依然是亂碼。
    還有我的 jpgraph 是 2.3 版的,會有差別嗎?
  • edited 一月 2008
    也許是字型的位置不一樣,不妨先找找自己系統中字型檔案的位置,藉此設定?
  • edited 一月 2008
    嗯,我當初因為是 Fedora 系統的關係,我去找了一下,
    發現我的字型檔案是在 /usr/share/fonts/chinese/TrueType/
    不過因為我的 /var 跟 /usr 處在不同的分割區下,
    不能做 hard link ,
    所以當時我是直接把檔案 copy 到 egroupware 目錄下,
    但可惜還是不成功....
    還有其他可能的原因嗎?
  • edited 一月 2008
    我剛看了一下,
    帶出甘特圖的地方,
    出現
    eGroupWare 內建的 JPGraph 版本較舊,因此部份功能也許無法順利執行。
    請從 www.aditus.nu/jpgraph 下載最新版本並且安裝在 /var/www/html/jpgraph 。
    我有下載 JPGraph 2.3 放在 /var/www 底下,
    但是 egroupware 的專案管理目錄在
    /var/www/html/egroupware/projectmanager 底下,
    而且那邊的 inc 底下另外有一個 jpgraph-1.5.2 的目錄。
    是不是它實際用的是這個 1.5.2 而不是我新抓的 2.3 ?
    那要如何修改設定?
  • edited 一月 2008
    ok,我剛剛把 jpgraph 2.3 copy 到 jpgraph-1.5.2 取代原本版本,
    已經確定 project manager 是使用 2.3 版本了,
    但是他似乎還是不找我提供的中文字型,
    他還是要找 VeraBd.ttf 這個字型,
    因為之前我字型檔位置的設置沒有改的時候,
    他出現的錯誤訊息是要找這個字型檔,
    不是我設定給他的中文字型檔。
    是因為我的 egroupware 是 UTF-8 的關係嗎?
    當然,我可以用我的中文字型檔案取代 VeraBd.ttf 的檔名,
    這樣可以顯示中文 :-D
    不過這樣好像只有解一半,還是想不懂到底錯在什麼地方..... :-(
  • edited 一月 2008
    如果不希望改變程式碼,jpgraph 新版本應該裝在跟 egroupware 同一層目錄下,如果 egroupware 裝在 /var/www/html/egroupware ,那麼 jpgraph 應該放在 /var/www/html/jpgraph ,這樣子 project_manager 應該就會自動去抓。

    其實可以透過全文搜尋的方式去找到哪些檔案有你提到的中文字型檔名,這樣子問題就單純多了 :)
  • edited 二月 2008
    感謝大大的教學
    小弟改了之後
    的確有效果
    不過仍然有地方是亂碼
    不知是什麼原因
    請看圖
  • edited 二月 2008
    這些文字應該是取自主機的 locale 設定,也許主機的預設編碼與程式預測的不一致造成。
  • edited 二月 2008
    感謝您的回覆
    那如果是系統語系的話
    應該去檢查哪裡呢??
    我去檢查/etc/sysconfig/i18n
    是LANG="zh_TW.UTF-8"
    還是要檢查httpd嗎??
    能否給小弟一點提式
    謝謝
  • edited 二月 2008
    http://twpug.net/x/modules/newbb/viewtopic.php?post_id=9717

    我還沒試著去找程式碼,通信論壇找到的位置是:
    projectmanger/inc/class.ganttchart.inc.php
  • edited 二月 2008
    請問一下
    setlocale(LC_TIME, 'zh_TW.utf8');
    這一行要放在哪才對呢??
    我試著找過放在
    if (setlocale(LC_ALL,$locale='en_EN')) return $locale;
    的下面或是將這行註解都沒有用
    另外如果註解後存檔需要重新啟動httpd嗎??
    還是只要存檔就可以了
    謝謝
  • edited 二月 2008
    只要存檔就可以了,不妨先試試,我手邊沒有測試環境可以試,只能根據自己的印象回答。
  • edited 二月 2008
    我試了好幾天
    都一直無法成功
    剛才去看了一下egroupware的demo網站
    demo網站的月份雖然是寫英文的
    但是卻是正常的
    難道真的沒有辦法解決嗎??
    謝謝
  • edited 三月 2008
    英文的一般不會遇到這個問題,因為在不同的編碼下,英文大多不需要任何改變就能夠使用;我想一定有辦法解決,只是我暫時沒有心力放在自己沒有在使用的功能上,而也剛好沒有其他願意回應的朋友處理過這個問題。 :)
  • edited 六月 2009
    大家好,我剛好也遇到一模一樣的問題正在找答案,很感謝kiang提供的資訊讓我解決了這個問題,所以特地上來把解決方法提供給遇到相同問題的人。

    環境:CentOS 5.2, Apache 2.2.3, PHP 5.1.6, eGroupware 1.6.001, Jpgraph 2.3.4
    eGroupware路徑:/usr/share/egroupware
    Jpgraph路徑:/usr/share/jpgraph

    此篇回覆特別針對甘特圖中文顯示正常但是英文月份會顯示亂碼的問題!

    1.編輯檔案
    /usr/share/egroupware/projectmanager/inc/class.projectmanager_ganttchart.inc.php

    2.搜尋function guess_locale()
    3.把function內有setlocale的程式碼都註解
    4.在return 'C';之前貼上setlocale(LC_TIME, 'zh_TW.utf8'); return $locale;

    這問題困擾了我一整天...終於找到解決方法,再次感謝kiang
Sign In or Register to comment.