dotProjectをインストールして設定するシリーズの最終回です。
前々回インストール、前回ソースを弄ってガントチャートを日本語対応させました。
今回は積み残しの日本語対応である、年/月/日の表示と、名前を「姓・名」の順にする対応をしようと思います。
しかし前回同様、PHPで書かれたソースをかなり修正します。
最後に追加の設定もします。
dotProjectのバージョン
本稿は、dotProject 2.1.8に関して書いています。
ソースの修正は、dotProjectの異なるバージョンには対応しませんので、ご注意ください。
日付表示の修正
前回掲載したガントチャートの画面では、日付の表示が「2016/5月/17」でした。
これは「デフォルトのユーザー環境設定」の「短い日付書式」に、適当な選択肢がないことが原因でした。まずこれから修正し、「2016/05/17」のような日付の表示になるようにします。
「dotproject/modules/system/addeditpref.php」の102行をコピーしてその次の行に挿入し、フォーマットの文字列を修正します。
$f = "%Y/%b/%d"; $dates[$f] = $ex->format($f); $f = "%Y/%m/%d"; $dates[$f] = $ex->format($f); // 2016.05.17 yujakudo inserted echo arraySelect($dates, 'pref_name[SHDATEFORMAT]', 'class="text" size="1"', @$prefs['SHDATEFORMAT'], false);
これでユーザ環境設定の「短い日付書式」にて「2016/05/17」のような表記が選択可能になります。
名前の表示の修正
トップページのタスクの、「次のToDoを表示:」から選択する名前が、現在「名, 姓」になっています。
そもそも私は、名前の入力にて「姓・名」の順に入力したので、データベースでは’contact_first_name’に姓、’ contact_last_name ‘に名が入っています。
本来は、英語に合わせて’contact_first_name’に名、’ contact_last_name ‘に姓を入力し、全ての名前の表示が姓・名となるようにするのが正しい吸収でしょう。
しかしdotProjectでは、名前の表示には “first_name last_name”の順の表示と、”last_name, first_name”の順の2種類があり、しかもハードコーディングされているようです。
それら全てを吸収するのは面倒なので、入力は今の、’contact_first_name’を姓に、’ contact_last_name’を名にしたままで、”last_name, first_name”の順の表示だけを切り替え可能に修正したいと思います。
ですので、vCardの出力などはうまくいかない可能性大です。
表示部分の修正
表示を行う部分では、このような名前の表示は「$row[‘contact_last_name’] . ‘, ‘ . $row[‘contact_first_name’]」のようにハードコーディングされています。
これを全て「list_contact_name($row)」のように関数で置き換え、新たに作成する関数内で吸収します。
置き換えるべき部分を検索すると以下が見つかりました。
- dotproject/modules/admin/vw_usr_sessions.php:154行
- dotproject/modules/companies/vw_contacts.php:41行
- dotproject/modules/companies/vw_users.php:34行
- dotproject/modules/tasks/todo_gantt_sub.php:34行
まだ他にもあるかもしれません。
例えば最後の「dotproject/modules/tasks/todo_gantt_sub.php」34行では、以下のように修正します。
. list_contact_name($row)
SQL文の修正
上のように表示部で文字列結合しているだけでなく、SQLのクエリー文で「CONCAT_WS(“, “,contact_last_name,contact_first_name)」のように書いているものもあります。
これらも後で定義する「CONTACT_NAME_SQL」に置き換えます。
検索して見つかった場所は以下です。
- dotproject/classes/permissions.class.php:340行
- dotproject/modules/companies/addedit.php:48行
- dotproject/modules/departments/addedit.php:66行
- dotproject/modules/projects/addedit.php:35行
- dotproject/modules/projects/view.php:62行
- dotproject/modules/tasks/ae_resource.php:17行
例えば最後の「dotproject/modules/tasks/ae_resource.php」17行では、以下のように修正します。
$q->addQuery("ut.user_id, perc_assignment, ".CONTACT_NAME_SQL." as contact_name");
文字列の囲みがダブルクォーテーションかシングルクォーテーションかに注意し、また後に続くスペースや’as’を削除しないように、’.’演算子を書いて注意深く置き換えていきます。
関数の作成
関数list_contact_nameは「dotproject/includes/main_functions.php」の最後に追加することにします。
またCONTACT_NAME_SQLのデフォルトの定義も、ここに定義しようと思います。
if(!defined('CONTACT_NAME_SQL')) define('CONTACT_NAME_SQL', 'CONCAT_WS(", ",contact_last_name,contact_first_name)'); if(!defined('CONTACT_NAME_FORMAT')) define('CONTACT_NAME_FORMAT', '%2$s, %1$s'); /** * contact nameの取得. */ function list_contact_name($row) { return sprintf(CONTACT_NAME_FORMAT, $row['contact_first_name'], $row['contact_last_name']); } ?>
こんな感じです。
デフォルトはやっぱりオリジナルと同じにします。
config.phpに追加
そして前回同様、「dotproject/includes/config.php」の最後のほうに日本語での表示フォーマットの定義を追加します。
// コンタクトネームのフォーマット define('CONTACT_NAME_FORMAT', '%1$s %2$s'); // コンタクトネームのSQL define('CONTACT_NAME_SQL', 'CONCAT_WS(" ",contact_first_name,contact_last_name)');
以上です。
もし副作用がでるようでしたら、これらのdefineをコメントアウトして見て下さい。(それでもエラーなら、先の関数やSQL文を置き換える際の失敗です。)
本当はフォーマットもロケールの中に定義すべきなんでしょうね。
しかしその場合は、ちゃんと姓がlast_name、名がfirst_nameに対応するようにして、名前の表示部を全て修正して、尚且つ入力する画面も対応させるまでする必要があるでしょう。
翻訳の追加
本シリーズでは、HiromiKimuraさんのサイトのPatch/dotProjectのページよりdotProject-2.1.5対応の日本語メッセージファイルを頂きました。
そのためか、2.1.8では未翻訳の語があります。
システム管理のページから、「翻訳管理」をクリックすると翻訳が追加できます。
右上よりモジュールを選択して、翻訳を入力するようです。「送信」はページの下の方にあります。
2.1.6以降追加された単語については出てこないかもしれません。その場合は日本語メッセージファイルを修正する必要があります。
アプリの翻訳は使われる文脈に適切にする必要がありますので、私はこの時点で行うつもりはありません。
その他の設定
最後に残りの環境設定をしたいと思います。
システム管理のページから、「システム設定」をクリックします。
残業したい(させたい)場合
前回タスクの新規追加にて、8時から17時までした時間の選択しかでませんでした。
calendar_group_titleの節で、開始時間と終了時間を設定すると選択肢が増えます。
ときに、5時から21時まで。(苦笑
通貨設定
プロジェクトの入力で、予算の単位が$でしたので、これも修正しておきます。
ui_group_titleの節の通貨記号で、全角の「¥」を入れておきます。
ホストのロケールはなんとなく「ja」にしましたが、あまり意味ないかな、と思います。
右下の「保存」をクリックして終了です。
まとめ
以上でdotProjectのインストールと設定が全て終了しました。
各タスクは、作業するごとに「新規ログ」のタブから進捗を入力するようです。「説明」にコメントを入力するのが必須のようです。(「作業時間」にタイマもついてますね。)
そしてプロジェクトが終了したら、編集してステータス(状況)を「完了」にしておきます。
使っているうちに、本稿での修正ではうまくいかない場合、設定しておいた方が良い項目があるかもしれません。これらは見つかったら追記するようにしたいと思います。