Hudsonにへっぽこパッチをあてて,TinyMCEを組み込んでみた
Hudsonの「説明を記入」はなかなか便利なんだけど,素のテキストエリアで使い勝手がイマイチだったので,TinyMCEを組み込んでみた。
組み込み方
- TinyMCEを '$HUDSON_HOME/main/war/resources/scripts' に放り込む。
- あと,こんなパッチあててビルドする(つってもコンパイル不要なんで,実行環境に直接あててもいい)。
Index: core/src/main/resources/hudson/model/AbstractModelObject/descriptionForm.jelly =================================================================== --- core/src/main/resources/hudson/model/AbstractModelObject/descriptionForm.jelly Thu Apr 03 11:39:23 JST 2008 +++ core/src/main/resources/hudson/model/AbstractModelObject/descriptionForm.jelly Thu Apr 03 11:39:23 JST 2008 @@ -4,7 +4,7 @@ <j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:f="/lib/form" xmlns:l="/lib/layout"> <l:ajax> <form action="submitDescription" method="post"> - <f:textarea name="description" value="${it.description}" /> + <f:textarea name="description" id="description_editor" value="${it.description}" /> <div align="right"> <f:submit value="Submit" /> </div> Index: core/src/main/resources/lib/layout/layout.jelly =================================================================== --- core/src/main/resources/lib/layout/layout.jelly Thu Apr 03 11:02:26 JST 2008 +++ core/src/main/resources/lib/layout/layout.jelly Thu Apr 03 11:02:26 JST 2008 @@ -63,7 +63,8 @@ </j:if> <script src="${resURL}/scripts/hudson-behavior.js" type="text/javascript"></script> + <script src="${resURL}/scripts/tiny_mce/tiny_mce.js" type="text/javascript"></script> - + <link rel="stylesheet" href="${resURL}/scripts/yui/container/assets/container.css" type="text/css"/> <link rel="stylesheet" href="${resURL}/scripts/yui/assets/skins/sam/skin.css" type="text/css" /> <link rel="stylesheet" href="${resURL}/scripts/yui/button/assets/skins/sam/button.css" type="text/css" /> Index: war/resources/scripts/hudson-behavior.js =================================================================== --- war/resources/scripts/hudson-behavior.js Thu Apr 03 11:47:33 JST 2008 +++ war/resources/scripts/hudson-behavior.js Thu Apr 03 11:47:33 JST 2008 @@ -447,6 +447,19 @@ onComplete : function(x) { d.innerHTML = x.responseText; Behaviour.applySubtree(d); + tinyMCE.init({ + mode : "exact", + elements : "description_editor", + theme : "advanced", + theme_advanced_toolbar_location : "top", + theme_advanced_toolbar_align : "left", + plugins : "table,contextmenu,searchreplace", + theme_advanced_layout_manager : "SimpleLayout", + theme_advanced_buttons1 : "search,replace,separator,bold,italic,insertdate,underline,strikethrough,separator,bullist,numlist,outdent,indent,formatselect,separator,hr,table,link,unlink,separator,cleanup,help,code", + theme_advanced_buttons2 : "", + theme_advanced_buttons3 : "" + + }); d.getElementsByTagName("TEXTAREA")[0].focus(); } }
参考リンク
- http://pukiwiki.junoe.jp/index.php?TinyMCE
- HugeDomains.com - Shop for over 300,000 Premium Domains
- WeekBuildのHACK日記 Trac用TinyMCEのお勧め設定
リサイズのハンドルが効かないとか,まだ調整の余地はあるけど,当初の目的は果たしたからもういいや(tinyMCE.init()のオプション,お好みで調整してちょ)。
WYSIWYGで編集できるんで便利なんだけど,TinyMCEってGPL(もしくはLGPL)なのね。できてから気付いたんで,ガッカリした。:-(
ps.
それはそうと,Hudsonの「説明を記入」はホントウに便利だよ。
よくやるのは,プロジェクトページにTODOメモっとくのと,失敗ビルドんときに何でコケたのかメモるのに使ってる(ついでに,「Keep this build forever」でビルド自体も保存しとく)。