daily dayflower

2007-11-15

Drupal でメッセージを隠せるようにする

Drupal 5.x は昔と比べて見目麗しくなったので,最近ちょこちょこ遊んでいます。

ページの追加とか管理作業とかすると上部にメッセージボックスがでるんですが,これをクリックすると消えるようにしたいと思いました。activeCollab*1 だとそういう挙動なんで真似しようと思ったわけです。

Message Effects というモジュールもあるんですが,DrupalデフォルトjQuery を読み込むので,JavaScript を書くだけで,できそう。

if (Drupal.jsEnabled) {

var MakeMessagesHidable = function (boxes) {
    boxes = $(boxes);

    boxes.click(function () {
             var me = $(this);
             me.animate(
                    { opacity: 0.0 }, 500, null,
                    function () { me.animate({ height: 'hide' }, 300); }
                );
          })
         .css('cursor', 'pointer')
         ;

    /* color animation will be available with jQuery Interface */
    if (jQuery.fxe)
        boxes.each(function () {
                  var me = $(this);
                  var old_bgcol = me.css('backgroundColor');
                  me.css('backgroundColor', '#ffffbb')
                    .animate({ 'backgroundColor': old_bgcol }, 1000)
                    ;
              })
             ;
};

$(function () {
    MakeMessagesHidable('div.messages');
});

}

jQuery Interface モジュールインストールされてて,どこかで jquery_interface_add() されてる場合は,ハイライトするようにもなってます。jQuery Interface がないと color の jQuery.animate() がうまくいかなかったんで。jQuery.Highlight() でやらずに自力で animate() してるのはその試行錯誤の名残りです。でもま,ミニマム指向でよしとする。

あと,単純に slideUp()hide('slow') とかしてないのは挙動が気にくわなかったためです。

*1:めっきり触っていません。文句の言える筋合いではないですが,正直なんだかなぁという展開になっちゃいましたし。追記: http://projectpier.org/ にオープンソースなフォークがあるんですね。知りませんでした。

2006-11-02

activeCollab で日時出力のローカライズ

activeCollab はもともと英語版のロケールしかありませんが,N.S.WORKs さんの日本語化ファイルを使うことで日本語で扱うことができます。

メッセージまわりは日本語になるのですが,日付の出力形式が

Thursday, 2 November

みたくなって切ない。なのでソースを解読して日時の出力をローカライズしてみました。

まず,language/ja_jp.php の後半に

  $this->setDateTimeFormat('Y/m/d H:i');

  $this->setDateFormat('Y/m/d');

  $this->setTimeFormat('H:i');

  if (method_exists($this, 'setDescriptiveDateFormat'))
    $this->setDescriptiveDateFormat('n月j日 (D)');

を付け足します。もともとのファイルは EUC-JP になっていますが,UTF-8 にしてください。

method_exists() してるのは,もともとのローカライザで定義されてないためです。そのファイル(environment/classes/localization/Localization.class.php)のパッチはこちら。

--- environment/classes/localization/Localization.class.php.orig	2006-09-19 02:54:22.000000000 +0900
+++ environment/classes/localization/Localization.class.php	2006-11-02 15:52:07.000000000 +0900
@@ -287,6 +287,17 @@
     } // setDateFormat
     
+    /**
+    * Set descriptive date format value
+    *
+    * @access public
+    * @param string $value
+    * @return null
+    */
+    function setDescriptiveDateFormat($value) {
+      $this->descriptive_date_format = (string) $value;
+    } // setDescriptiveDateFormat
+    
     /**
     * Get time format
     *
     * @access public

日付出力が date() 関数を使っているので曜日が日本語にならないのはご愛敬ということで。

フォーラムの http://www.activecollab.com/forums/post/82/#post82 で言及されているように,たしかにローカライゼーションまわりのコードがイマイチ固まってない感じなので*1いつまで使えるかわかりません。

あと,日付入力フォームの並び順(月・日・年)などはかわりません。application/helpers/form.php の function pick_date_widget() が該当部分なんですが,ローカライズを考えた作りになっていないので。

*1:メッセージまわりはこのままでいけそうですけれど

2006-10-02

Honest Public License (HPL)

GPLv2 なソフトを改変利用して ASP を私が始めた場合,その ASP の利用者にたいして改変したソースを提供する義務は発生しません(日本での第一人者たる八田さんも書いていらっしゃいますしたぶん正しい)。私のようにフリーライダーにとっては楽な状況ですけど。

で,そのへんもなんとかしようよーと GPLv3 を策定しようとしているのですがいろいろ議論が議論を呼んだりしてなかなか決定されない。で,しびれをきらしてでてきたうちの一つが Honest Public License です。

これに従うと前述のような状況でもソースコードの提供義務が発生する,と。ただ,もちろん,HPL は GPLv2 の後継ではないので現在 GPLv2 or later とうたっているものには影響しないんですが。

で,activeCollab はライセンスを HPL にするようです。

2006-09-27

activeCollab 0.7 beta を試してみた

日本だと id:harg さんががんばりまくっている*1activeCollab ですが,0.7 beta がでてるなーと思いつつ,忙しくて手を出せませんでした。昨日になってようやっとさわる時間ができました。

そもそも activeCollab とは

  • BaseCamp にインスパイヤされた人がたぶん一人でがりがり作ってる
  • PHP 5.1以降(←重要)と MySQL 4.1 以降で動く
  • マイルストーン,タスクリスト,タスク,等々にタグをつけることができる
  • ファイルをうpでき,リビジョン管理ができる*2
  • デフォルトの見た目がイイ
  • ライセンスが最近 HPL に変わった(←あとで書く書いた Honest Public License (HPL) - daily dayflower

つーか activeCollab-Japan の文書読め。以上。

という特徴はみなさんごぞんじとはおもいますので 0.7 beta の特徴を書きますと

  • もともとドキュメントのupに対応してたのを汎用のファイル管理にした
  • マイルストーンの期限を iCalendar 形式でエクスポートできるようになった
  • テーマに対応(試せず

といったところが目に付きました。


昔からあるフィーチャーかもしれませんが,展開したあとに language というフォルダがあるので,そこに日本語用のフォルダ(ja_jp 等)を作って編集するとそこそこローカライズできます*3

ローカライズの指針ですが,

  • まずは language/en_us を language/ja_jp にコピー
  • 手っ取り早く日本語化を実感したいのなら,下記のファイルを優先して翻訳(上のほう優先度高)
    • objects.php
    • general.php
    • site_interface.php
    • あとお好みで
  • 編集は UTF-8
  • ロケール選択のインタフェースがあるかどうかわからなかったんで,config/config.php の DEFAULT_LOCALIZATION を ja_jp に変更

するのがおすすめです。

で,お遊びで一部だけ日本語にしてみました。

f:id:dayflower:20060927132251p:image

画像は自動でサムネイルが出ますし,それ以外もおそらく拡張子から判別したアイコンが自動的に表示されます(IE でスクリーンショットとったのでアイコンの PNG の透過がおかしいですが)。

先ほど特徴で説明した,ファイルのリビジョン管理の画面がこちら。

f:id:dayflower:20060927132311p:image

小さくてみずらいーーー。すみません。

サイト管理をしていると,仕様書だの設計書だの文書が次々に更新されることが多いので,こういう機能がもともと備わっているとありがたいですね。

10/01 追記

N.S.WORKs さんがきちんと日本語化ファイルをつくっていらっしゃいました。ん〜精力的。

*1:see http://activecollab-ja.info/

*2:とはいえソースの管理に使うのは無謀だと思います

*3:もちろんデフォルトでもインタフェースが英語なだけで,日本語を取り扱うことができます

2006-08-07

プロジェクト管理 activeCollab ならなんとかとっついてもらえるかなぁ

最近カットオーバーしたプロジェクトはウチ一社とクライアント一社を含めて約5社がかかわっていました。プロジェクト始動当初は Trac を使ってなんとか協業(バグトラッキングとか)できないかなぁと考えてましたが,そういった環境整備する間もなく開発フェーズに入ってしまったのでまともなプロジェクト管理はできませんでした(結果→頻繁な会議とメール爆弾)。

さて。プロジェクトも終わったので PHPSPOT 開発日誌さんで読んで気になっていた activeCollab を試しにローカルにいれてみました(N.S.WORKSさんが日本語化ファイルを提供してくださってるんでそれもお供で)。これは結構いいですねぇ。「何かをしたい」時にそこに至る道筋がいたるところにあるので,ある程度情報リテラシーのある人なら直感的にさわれます。

とべた褒めしてみましたがいくつか気になる点として

  • 日本語ローカライズファイルをいれると,情報を更新(上書き)するためのボタンが「〜の編集」というボタンになってしまってやや直感性がそがれている。
  • ダッシュボードに「オンラインユーザ」という項目があるので,たとえば独立した取引先の B 社 C 社があった場合,取引があることがばれてしまう(具体的にどのプロジェクトに関わっているかはみられないですよ,念のため)。
  • さすがにクライアントは情シスクラスでないと使いにくい。易しいチュートリアル必要。
  • カレンダー系の機能はないみたい。

が,あげられます。発展途上なので仕方ないですが。あと,当然コード管理とかはしてくれません。社内的には Trac 使って対外的には activeCollab 使うというのがいいかも。ほか blog や Wiki もついていないんですが,逆に社外プロジェクト管理パッケージの取捨選択として考えるとこれはこれで割り切り具合がいいと思いました。

しかし我ながらこんなので感動してたら Basecamp 使ったら鼻血が出てしまうんだろうなぁ…

おまけ(2006/08/08)

作者のStuden氏は、Beign 37signals for freeからプロジェクト管理用ソフトウェアのオープンソース化を思いついたという。この記事のコメントの中で、Studen氏は「Basecampを作るのはそんなに大変じゃない」「Basecampのようなソフトを作ったことがある」と発言し、後にactiveCollabプロジェクトを立ち上げた。 activeCollab とは - はてなキーワード

なんか厨房ノリで笑った。名前も Studen だし。でもフカシで終わらずこんないい物作ったのはすごいですね。

参考リンク