Hatena::Grouprubyist

うんたらかんたらRuby RSSフィード

2009-12-13redmineの色変更

redmineの色変更

| redmineの色変更 - うんたらかんたらRuby を含むブックマーク はてなブックマーク - redmineの色変更 - うんたらかんたらRuby

redmineでは、cssの変更でtracのようにチケット一覧の色を変更することができる。

redmine のチケットの色づけ - yuum3のお仕事日記


htmlを見てみると

<tr id="issue-15" class="hascontextmenu even issue status-5 priority-2 closed overdue created-by-me assigned-to-me">

こんな感じ。

ステータスでもできそうなのでソースを見てみた。



結局

下記のように設定。

/** Ticket BG color **/
.priority-5 {background: #eaa;}
.priority-4 {background: #fed;}
.priority-3 {background: #ffd;}
.priority-2 {background: #f6f6f6;}
.priority-1 {background: #dff;}

.status-6 {background: #808080;}
.status-5 {background: #808080;}

f:id:rochefort:20091213164525p:image


調べた内容

まずはview見て(views/issues/index.rhtml)

使ってるpartial見て(_list.rhtml)

使ってるメソッド(css_issue_classes)からhelper(issues_helper.rb)へ。

  # Returns a string of css classes that apply to the given issue
  def css_issue_classes(issue)
    s = "issue status-#{issue.status.position} priority-#{issue.priority.position}"
    s << ' closed' if issue.closed?
    s << ' overdue' if issue.overdue?
    s << ' created-by-me' if User.current.logged? && issue.author_id == User.current.id
    s << ' assigned-to-me' if User.current.logged? && issue.assigned_to_id == User.current.id
    s
  end

issue.status.position、issue.priority.position なのでmodel(issue.rb)を見ると

class Issue < ActiveRecord::Base
  belongs_to :status, :class_name => 'IssueStatus', :foreign_key => 'status_id'
  belongs_to :priority, :class_name => 'Enumeration', :foreign_key => 'priority_id'

となってるのでDB(issue_statases、enumerations)覗いてみると

f:id:rochefort:20091214030426p:image

f:id:rochefort:20091214030427p:image


こんな感じ。

これでcssとの対応付けができる。


おまけ

初期設定値が気になったので、dbの値(日本語名)で検索すると

ja.ymlが見つかった。

default_issue_status_new: 新規
default_issue_status_assigned: 担当
default_issue_status_resolved: 解決
default_issue_status_feedback: フィードバック
default_issue_status_closed: 終了
default_issue_status_rejected: 却下

default_priority_low: 低め
default_priority_normal: 通常
default_priority_high: 高め
default_priority_urgent: 急いで
default_priority_immediate: 今すぐ

あとは、keyで検索するとloader.rbが見つかった。

ここか。

loader.rb
            # Issue statuses
            new       = IssueStatus.create!(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :position => 1)
            assigned  = IssueStatus.create!(:name => l(:default_issue_status_assigned), :is_closed => false, :is_default => false, :position => 2)
            resolved  = IssueStatus.create!(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :position => 3)
            feedback  = IssueStatus.create!(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :position => 4)
            closed    = IssueStatus.create!(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :position => 5)
            rejected  = IssueStatus.create!(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :position => 6)
            


            Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_low), :position => 1)
            Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_normal), :position => 2, :is_default => true)
            Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_high), :position => 3)
            Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_urgent), :position => 4)
            Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_immediate), :position => 5)


おまけ2

redmineのバージョン確認は 管理→情報 で確認できる。

(lib/redmine/version.rb)

Redmine 0.8.7.stable.3087 (SQLite)


viewからソースを追っていくのは、なかなか面白い。

あと、cssのクラスを適宜設定するようにしておいた方が何かと便利だな。

トラックバック - http://rubyist.g.hatena.ne.jp/rochefort/20091213