メイン

「redMine」のアーカイブ

2008年3月30日

Redmine 0.7.0 RC1 Release!

Redmineのバージョン0.7.0 RC1がリリースされました。

Redmine - Redmine 0.7.0 RC1 released - Redmine

ダウンロードはこちらから。

新規でインストールされる方は、
Ruby on Railsで作られたプロジェクト管理ツールredMineを使ってみよう!:第2回 環境構築/redMineのインストール・初期設定|gihyo.jp … 技術評論社
を、既存のRedmineをバージョンアップして利用される方は、
Redmineを運用するためのイロハを身につけよう:第1回 新機能の紹介と最新版が利用できるまで|gihyo.jp … 技術評論社
を参考にしてみてください。

0.5から0.6にバージョンアップしたときには、UIががらりと変わりましたが、今回は見た目の大きな変化はありませんでした。ただ、Changelogを見ると、かなりたくさんの機能追加/Bugfixがあります。

個人的にはRSSフィードが取得できる画面が増えたのと、リンクが画面上に表示されるようになったのが良い感じかなと。

チェンジログを訳そうかと思いましたが、もしかするとgihyo.jpの連載の中で0.7の新機能について取り上げるかも、と思ったので様子見することにします。

2008年3月18日

gihyo.jpでのRedmineの運用に関する連載

会社の後輩が、gihyo.jpにてRedmineの運用に関する連載を開始しました。

Redmineを運用するためのイロハを身につけよう:第1回 新機能の紹介と最新版が利用できるまで|gihyo.jp … 技術評論社

彼らは、実際に社内でRedmineを使ってプロジェクト管理を実施していて、その方面ではかなりのノウハウを蓄えています(そのはず)。この連載で、その辺のノウハウを惜しむことなく出してくれるのでは、と勝手に期待している次第です。

gihyo.jpで以前に書かせてもらった記事が、未だにアクセスの数が多いらしいのですが、書いたときのバージョンが0.5系となっていて、情報が若干古いのではと気になっていたところでした。

今後は、JRuby上での運用や軽量Webサーバでの運用など、おもしろそうな内容を予定しているらしいので、楽しみ楽しみ。

2007年12月28日

IE6 で Redmine0.6 の右クリックコンテキストメニューのサブメニューを表示させる

Redmineのユーザグループに投げられた下記の問題。

 

IE6利用時に、Redmine0.6 の問題リストで右クリックしたときに表示されるコンテキストメニューのサブメニュー表示されない。

 

原因を探っていて、分かったことが色々あったので書いておきます。

 

・右クリックのコンテキストメニューの階層構造は、CSSで制御されている。

・li:hover という属性で、その下のulタグがdisplay:block;に切り替わる仕組み。

・でも、~IE6では、a タグ以外に :hover 属性が効かない

・そこで、Redmine では、csshover.htc を読み込んで、a タグ以外にも:hover が効くようにしている。

・でも出ない。

・コンテキストメニューは、右クリック時に、Ajax で動的に取得される

・csshover.htc の中にはjavascript が書いてあって、documentonready つまり、ドキュメントがすべて表示された段階で、parseStylesheets()という関数が実行されている。

・つまり、li:hover してほしいHTMLElementがページ表示時にページ内にいないので、読み込んでいるcsshover.htcがコンテキストメニューの部分に対して意味をなしていない。

・ということで、コンテキストメニューがサーバから取得され、ページ内に表示された段階で、parseStylesheets()を実行できれば良い。

 

で、対応方法は以下の通り。

 

/public/stylesheets/csshover.htc

の27行目(コメント行から下)すべてを

/public/javascripts/context_menu.js

の最終行より下に、コピー。

そして、同じ context_menu.js の 42行目にある


new Ajax.Updater({success:'context-menu'}, '../../issues/
context_menu/' + id, {asynchronous:true, evalScripts:true,
onComplete:function(request){Effect.Appear('context-menu', {duration:0.20});}})

 

を、


new Ajax.Updater({success:'context-menu'}, '../../issues/context_menu/' + id,
 {asynchronous:true, evalScripts:true,onComplete:function(request){
 Effect.Appear('context-menu', {duration: 0.20});
 parseStylesheets();
}})

に書き換えます。

 

ただし、この方法だと、コンテキストメニューが表示される毎にparseStylesheets()関数が実行されて、あまりいけてないです。


csshover.htcの中身は、CSSをチェックして、:hover と書いているところを探し、そのクラスが適用されているページ内のHTML Elementにonmouseover とonmouseout のイベントをattach しているだけ。

コンテキストメニューの構造は分かっているので、じゃあ、べた書きでイベントをattach するようにしたのが以下のソース。


new Ajax.Updater({success:'context-menu'}, '../../issues/context_menu/' + id, {asynchronous:true, evalScripts:true, onComplete:function(request){
  Effect.Appear('context-menu', {duration: 0.20});
  if(!navigator.userAgent.match(/MSIE/) || window.XMLHttpRequest) return;
  try{
    var uls = $('context-menu').getElementsByTagName('ul');
    uls[0].id = 'context-menu-base-ul';
    uls[1].id = 'context-menu-sub-ul_0';
    uls[2].id = 'context-menu-sub-ul_1';
    uls[3].id = 'context-menu-sub-ul_2';
    var lis = $('context-menu').getElementsByTagName('li');
    for(var i = 0,j = 0,len = lis.length;i<len;i++){
      if(lis[i].className.indexOf('folder') >= 0){
        lis[i].id = 'context-menu-folder_' + j;
        j++;
      }
    }
    var menuShow = function(event){
      var li = Event.findElement(event, 'li');
      li.style.zIndex='10';
      $('context-menu-sub-ul_'+li.id.split('_')[1]).style.display='block';
    }
    var menuHide = function(event){
      var li = Event.findElement(event, 'li');
      li.style.zIndex='0';
      $('context-menu-sub-ul_'+li.id.split('_')[1]).style.display='none';
    }
    $('context-menu-sub-ul_0','context-menu-sub-ul_1','context-menu-sub-ul_2','context-menu-folder_0','context-menu-folder_1','context-menu-folder_2').each(function(obj) {
      Event.observe(obj, "mouseover", menuShow, false);
    });
    $('context-menu-sub-ul_0','context-menu-sub-ul_1','context-menu-sub-ul_2','context-menu-folder_0','context-menu-folder_1','context-menu-folder_2').each(function(obj) {
      Event.observe(obj, "mouseout", menuHide, false);
    });
  }catch(e){
  }
}
});


べたべーたですが、これでIE6でも右クリックメニューのサブメニューが表示されるようになりました。


 

2007年12月22日

Redmine の wiki 編集画面を auto preview にする

Redmineのwikiのプレビューが、幸いなことにAjaxを利用してプレビュー部分を書き出していたので、それをうまくHackして、書いていると自動的にプレビューが生成されるようにしてみます。

方法は以下の通り。

1. custom_wiki_preview.js というファイルを /public/javascripts 以下に作成する。

2. custom_wiki_preview.js の中に以下の内容を記述する。

var preveiwTimerId;
var previewFunc = function(){
new Ajax.Updater('preview', '/wiki/1/Docs/preview',
{asynchronous:true, evalScripts:true, method:'post',
onComplete:function(request){
Element.setStyle($('content_text'),{'width':'50%'});
Element.setStyle($('preview'),
{'position':'absolute','width':'48%','top':'146px','right':'10px'});
}, parameters:Form.serialize('wiki_form')});
return false;
}
var previewTimerFunc = function(){
clearTimeout(preveiwTimerId);
preveiwTimerId = setTimeout(previewFunc,1000);

}
Event.observe('content_text', 'keyup', previewTimerFunc, false);


3. /app/views/wiki/edit.rhtml に以下の記述を追記する。

<script type="text/javascript" src="/javascripts/custom_wiki_preview.js"></script>


これでOKです。

wikiの編集画面で、編集エリアに何か入力を加え、1秒待つと↓このように、画面右側にプレビューが表示されるようになります(デフォルトでは画面下に表示される)。

redmine_auto_wiki_preview.png


上記JavaScriptの内容は、編集欄のKeyupイベントを監視して、イベント発生毎にpreviewTimerFunc()を実行します。
previewTimerFunc() の中では、previewFuncを1秒後に実行するようにタイマーをセットしています。ここで、前のタイマーIDをクリアしているので、連続してキーが入力されたときは、previewFuncが実行されずサーバに負担をかけにくいようにしています。

3のステップで、rhtmlをいじっちゃってますが、これがやだなーって人は、2で作ったjsファイルをページにappendするbookmarkletを作っても良いですし、FireFox限定でよければGreasemonkeyスクリプトを作るという方法もあります。

2007年8月24日

gihyo.jp redMine の連載第4回目

gihyo.jpに「Ruby on Railsで作られたプロジェクト管理ツールredMineを使ってみよう!」の連載第3回が掲載されました。

Ruby on Railsで作られたプロジェクト管理ツールredMineを使ってみよう!:第4回 redMineを使ったプロジェクト管理(その2)|gihyo.jp


今回は、「問題」の進捗管理やドキュメント系の機能について解説しています。

本連載はこれでおしまい。

8月中全4回の短い連載でしたが、お楽しみいただけましたでしょうか。


こういうところに連載を書かせていただくのはこれが初めてだったので、私としても良い経験になりました。

2007年8月17日

gihyo.jp redMine の連載第3回目

gihyo.jpに「Ruby on Railsで作られたプロジェクト管理ツールredMineを使ってみよう!」の連載第3回が掲載されました。

Ruby on Railsで作られたプロジェクト管理ツールredMineを使ってみよう!:第3回 redMineを使ったプロジェクト管理(その1)|gihyo.jp


今回は、プロジェクトの登録やメンバーの登録、そして「問題」の登録、表示について解説しています。

2007年8月10日

gihyo.jp redMine の連載第2回目

gihyo.jpに「Ruby on Railsで作られたプロジェクト管理ツールredMineを使ってみよう!」の連載第2回が掲載されました。


Ruby on Railsで作られたプロジェクト管理ツールredMineを使ってみよう!:第2回 環境構築/redMineのインストール・初期設定|gihyo.jp


今回は、redMine の環境を構築するところを解説しています。

興味がある方は、この土日でご自分のPCに環境を構築してみてはいかがでしょうか?

アーカイブ