LoginSignup
4
8

More than 5 years have passed since last update.

ViewCustomizePluginのカスタマイズ

Last updated at Posted at 2018-06-19

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>&nbsp;');
    $('#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();
});
4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8