Redmineのプラグイン「view customize plugin」のカスタマイズ例と
RedmineのViewCustomizePluginのカスタマイズ事例を参考にして、自分が適用したカスタマイズ内容。
全般
ホーム(URL直下)にアクセスしたらプロジェクトへ自動遷移
JavaScript
/*
ホーム(URL直下)にアクセスしたらプロジェクトへ自動遷移
Path pattern:/$
Type:JavaScript
*/
$(function(){
if(($('#loggedas').length)){
window.location.href = "./projects";
}else{
window.location.href = "./login";
}
});
メニューバーを編集
ここでは、以下のように編集。
画像ファイルは、CSSの読み込まれ方の問題で特定できないので、テキトーに必ずパスが通る場所に置く。
- ホームを削除。
- ガントチャート(Easy Gantt)を削除。(無料だと使えないから)
- ヘルプを削除。
- マイチケットを追加。
- ボード(Agileプラグイン)を追加。
StyleSheet
/*
メニュー用のCSS追加
Path pattern: .*
Type: Stylesheet
*/
/* 追加メニューの全体設定 */
/* .agile-board はコンテンツ内に同一クラス名が利用されているのでNG */
#top-menu a.my-tickets, #top-menu a.agile-board-menu {
background-position: 0% 40%;
background-repeat: no-repeat;
padding-left: 20px;
padding-top: 2px;
padding-bottom: 3px;
}
/* マイチケット */
.my-tickets {
background-image: url(/redmine/custom_images/projects.png);
}
/* ボード */
.agile-board-menu {
background-image: url(/redmine/custom_images/projects.png);
}
JavaScript
/*
メニューのカスタマイズ
- ホームを削除
- ガントチャートを削除
- ヘルプを削除
- マイチケットを追加
- ボードを追加
Path pattern:.*
Type: JavaScript
*/
$(function(){
// メニューからホームを削除
if( $('#top-menu a.home').length ){
$('#top-menu a.home').parent().remove();
}
// メニューからガントチャートを削除
if( $('#top-menu a.easy-gantt').length ){
$('#top-menu a.easy-gantt').parent().remove();
}
// メニューからヘルプを削除
if( $('#top-menu a.help').length ){
$('#top-menu a.help').parent().remove();
}
// プロジェクトの右にマイチケットを追加
if( $('#top-menu a.projects').length ){
$('#top-menu a.projects').parent().after('<li><a class="my-tickets" href="/redmine/issues?query_id=2">マイチケット</a></li>');
}
// マイチケットの右にボードを追加
if( $('#top-menu a.my-tickets').length ){
$('#top-menu a.my-tickets').parent().after('<li><a class="agile-board-menu" href="/redmine/agile/board">ボード</a></li>');
}
});
プロジェクト
一覧の見た目を変更
StyleSheet
/*
プロジェクト一覧の表現変更
Path pattern: /projects$
Type: Stylesheet
*/
#projects-index {
column-count: 1;
column-width: auto;
-webkit-column-count: 1;
-webkit-column-width: auto;
-moz-column-count: 1;
-moz-column-width: auto;
}
チケット
全プロジェクトのチケット一覧を表示時、対象バージョンにプロジェクト名を含めない
JavaScript
/*
全プロジェクトのチケット表示時、対象バージョンにプロジェクト名を含めない。
Path pattern: ^/issues$
Type: JavaScript
*/
$(function(){
$('.fixed_version a').each(function(k, v) {
var projectName = $(v).parents('tr').find('.project a').text();
var versionName = $(v).text();
var regex = new RegExp(projectName + ' - ', 'g');
$(v).text(versionName.replace(regex, ''));
});
});
チケット作成時の初期値を変更
JavaScript
/*
チケット作成時の初期値変更
Path pattern: /issues/new$
Type: JavaScript
*/
$(function(){
// トラッカーのデフォルトを設定
// value=4は求めるトラッカーIDを指定
$('#issue_tracker_id option').removeAttr('selected');
$('#issue_tracker_id option[value=4]').attr('selected', true).trigger('change');
// 担当者のデフォルトを自分に
$('#issue_assigned_to_id option:contains("自分")').attr('selected', true);
});
チケット編集時、日付項目とかでエンターによるSubmit禁止
JavaScript
/*
チケット編集時のエンターキー誤送信防止
Path pattern: /issues/(new|[0-9]+)$
Type: JavaScript
*/
$(function(){
$(document).on('keypress', 'input', function(event) {
if(event.keyCode == 13) {
return false;
}
});
});
リポジトリ
リビジョン比較で色の説明を追記
StyleSheet
/*
リビジョン比較で色の説明用のCSS
Path pattern: /repository(/diff|/revisions/[0-9]+/diff)
Type: StyleSheet
*/
.color_description {
display: inline-block;
width: 50px;
text-align: center;
}
JavaScript
/*
リビジョン比較で色の説明を追加
Path pattern: /repository(/diff|/revisions/[0-9]+/diff)
Type: JavaScript
*/
$(function(){
$('#content > form > p').append('<br />');
$('#content > form > p')
.append('<span class="color_description diff_in">追加行</span> ');
$('#content > form > p')
.append('<span class="color_description diff_out">削除行</span>');
});
Agile board
オプション(表示列)をすべて強制表示させる
JavaSciprt
/*
Agile board を開いた直後は、全ステータスを列表示する。
Path pattern: /agile/board$
Type: JavaScript
*/
$(function(){
// クエリパラメータがある時は何もしない
if ($(location).attr('search') != '') {
return;
}
// オプションがすべてチェック済みの時は何もしない
if ($('[name^=f_status]:not(:checked)').length < 1) {
return;
}
// チェックがついていないオプションをチェックしてsubmitする
$('[name^=f_status]:not(:checked)').each(function(k, v) {
$(v).prop('checked', true);
});
$("#query_form").submit();
});