茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1729117 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_60D_00019.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2012/4/8 8:45:02
如何將 dotProject 的Gantt 圖中文亂碼修正
如何
這裡是使用 dotProject 2.1.2 的版本來實作本補強手札, 其它版本請依需求自行修正!!
==============================================================
| 本文章符合共享原則, 您可以隨意轉載, 但請註明出處以鼓勵作者的用心. |
==============================================================

1. 修正 JPGraph 設定
 a. 修改Chinese預設字型檔
  請打開文件 \lib\jpgraph\src\jpg-config.inc
  找到設定項
  [第73行]
   DEFINE('CHINESE_TTF_FONT','bkai00mp.ttf');

  替換紅色字
   DEFINE('CHINESE_TTF_FONT','ARIALUNI.TTF');

  註:ARIALUNI.TTF檔案可從本手札下載或由您自行尋找, 此為繁體中文Unicore字型檔, 大小為 23.275MB.

 b. 增加中文字型對應(如Bold, Italic等)
  請打開文件 \lib\jpgraph\src\jpgraph.php
  找到程式碼 [第3106行]
   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 ),

 
2. 修改專案部份 Gantt 產生程式碼
 a. 修改專案 Gantt 程式碼
  請打開文件 \modules\projects\gantt.php
  找到程式碼 [第131行]
   //$graph->scale->actinfo->SetFont(FF_CUSTOM);

  替換成
   $graph->scale->actinfo->SetFont(FF_CHINESE);

 
  找到程式碼 [第146行]
   if (is_file(TTF_DIR . 'FreeSansBold.ttf')) {
    $graph->scale->tableTitle->SetFont(FF_CUSTOM,FS_BOLD,12);
   }

  替換紅字為
   $graph->scale->tableTitle->SetFont(FF_CHINESE,FS_BOLD,12);

 
  找到程式碼 [第204行]
   $bar->title->SetColor('red');
   $graph->Add($bar);

  在上面加上一行
   $bar->title->SetFont(FF_CHINESE,FS_BOLD,8);
   $bar->title->SetColor('red');
   $graph->Add($bar);

  
  找到程式碼 [第266行]
   if (is_file(TTF_DIR."FreeSans.ttf")) {
    $bar->title->SetFont(FF_CHINESE, FS_NORMAL, 9);
   }

  替換為
   $bar->title->SetFont(FF_CHINESE, FS_NORMAL, 9);

 
  找到程式碼 [第271行]
   $bar->caption->Align('left','center');

  在後面加上一行
   $bar->caption->Align('left','center');
   $bar->caption->SetFont(FF_CHINESE,FS_NORMAL,10);

 
  找到程式碼 [第321行]、[第327行] (共兩處可一併被找到)
   $bar2->title->SetFont(FF_CUSTOM, FS_NORMAL, 9);

  兩處均將紅字替換為
   $bar2->title->SetFont(FF_CHINESE, FS_NORMAL, 9);

 
  找到程式碼 [第348行]
   $bar3->title->SetFont(FF_CUSTOM, FS_NORMAL, 9);

  替換紅字為
   $bar3->title->SetFont(FF_CHINESE, FS_NORMAL, 9);

 
  找到程式碼 [第367行]
   $graph->Add($vline);

  在前面加上一行
   $vline->title->SetFont(FF_CHINESE,FS_BOLD,8);
   $graph->Add($vline);

 
  找到程式碼串 [第211行起]
   if ($locale_char_set=='utf-8' & function_exists('utf8_decode')) {
    $name = ((strlen(utf8_decode($p['project_name'])) > 25)
    ? (substr(utf8_decode($p['project_name']), 0, 22) . '...')
    : utf8_decode($p['project_name']));
   } else {
   //while using charset different than UTF-8 we need not to use utf8_deocde
    $name = ((strlen($p['project_name']) > 25) ? (substr($p['project_name'], 0, 22).'...')
    : $p['project_name']) ;
   }

  整串(紅字)替換為
   $name = strlen($p["project_name"]) > 25 ? mb_substr($p["project_name"], 0, 22).'...' : $p["project_name"];


 b. 修改專案 Gantt2 程式碼 (其實步驟跟前一項差不多, 但還是一樣一樣來)
  請打開文件 \modules\projects\gantt2.php
  找到程式碼 [第80行]
   //$graph2->scale->actinfo->SetFont(FF_CUSTOM);

  替換為
   $graph2->scale->actinfo->SetFont(FF_CHINESE);


  找到程式碼 [第93行起]
   if (is_file(TTF_DIR . 'FreeSansBold.ttf')) {
    $graph2->scale->tableTitle->SetFont(FF_CUSTOM, FS_BOLD, 12);
   }

  全部替換為
   $graph2->scale->tableTitle->SetFont(FF_CHINESE, FS_BOLD, 12);


  找到程式碼 [第151行]
   $bar->title->SetCOlor('red');
   $graph2->Add($bar);

  在前面加上
   $bar->title->SetFont(FF_CHINESE,FS_BOLD,8);
   $bar->title->SetCOlor('red');
   $graph2->Add($bar);


  找到程式碼 [第166行起]
   if (is_file(TTF_DIR . 'FreeSansBold.ttf')) {
    $barTmp->title ->SetFont(FF_CUSTOM, FF_BOLD);
   }

  全部替換為
   $barTmp->title ->SetFont(FF_CHINESE, FF_BOLD);


  找到程式碼 [第224行]
   if (is_file(TTF_DIR . 'FreeSans.ttf')) {
    $bar->title->SetFont(FF_CUSTOM, FS_NORMAL, 10);
   }

  全部替換為
   $bar->title->SetFont(FF_CHINESE, FS_NORMAL, 10);


  找到程式碼 [第230行]
   $bar->caption->Align('left','center');

  在後面加上一行
   $bar->caption->Align('left','center');
   $bar->caption->SetFont(FF_CHINESE,FS_NORMAL,10);


  找到程式碼 [第246行]
   $graph->Add($vline);

  在前面加上一行
   $vline->title->SetFont(FF_CHINESE,FS_BOLD,8);
   $graph->Add($vline);



3. 修改任務 Gantt 程式碼
 打開文件 \modules\tasks\gantt.php
 修改編碼設定(原來已經為UTF-8編碼,不需再轉碼) [第361行]
   if ($locale_char_set=='utf-8' & function_exists('utf8_decode')) {
   $name = utf8_decode($name);
  }

 將以上程式碼全部刪除(紅字)

 搜尋全文字串"FF_CUSTOM"全部替換成"FF_CHINESE"即可.

============================================================
好了,這樣是不是全部都變中文了呢!!
這是一個很簡易的全部一次修改作法,如果您是程式專家,當然也可以根據原來的設定去變換不同的字型來使用,以增加專案系統的花樣,加油嘍!!


原文出處:如何將 dotProject 的Gantt 圖中文亂碼修正 - 交流討論 - dotProject - dotProject 專案管理 - 520 逐夢者之家 ::: Forever Version - Powered by Discuz!
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|