Help us understand the problem. What is going on with this article?

ViewCustomizePluginのカスタマイズ

More than 1 year has passed since last update.

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();
});
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away