Redmineプラグイン開発 – 史上最高のチームプラグインリリース

スポンサーリンク

Screen shot 2011-04-29 at 7.41.50 PM

自分のチケットの動きはマイページや活動でみれるんだけど、メンバー全員の今を表示するプラグインが欲しかったので作ってみる。とかいってますが、結局さぼっている人をみつけて、それをさらすためのプラグインでもある。Redmineを使ってくれない人に対するいやがらせでもある。

スポンサーリンク

史上最高のチームプラグイン

より詳細はgithubをご確認ください。(You would like to get more information, please check github.)

Download

  • github (Recent version is here.)

Product Backlog

  • Roadmapsプラグインと同じくデータが増えると重くなる
  • 大豆プラグインの統計情報表示を加えたい

コメント

  1. 匿名 より:

    使わせていただいております。
    一個良くわからない現象が発生しています。
    “最近の動き”の部分で、開発者の状況に
    「S78」
    とだけ表示されるメンバが数名います。
    これは何でしょうか。。
    十数名での開発プロジェクトです。

  2. 匿名 より:

    すみません。
    S78と表示される原因がわかりました。
    プロジェクトの設定で「時間トラッキング」を有効にしていない場合、表示されますね。
    (時間トラッキングしない人がこのプラグインを使うことはないので、問題ではないですね。。)
    失礼しました。

  3. ふじはら より:

    こんばんは。情報ありがとうございます!
    まだまだできることがありそうですねぇ。。。上司がRedmineを使わないので、「じゃーどんな画面がいいのさ!」ということで作ったプラグインです。
    現場の意見などがありましたらぜひFBくださいませー。

  4. いっつ より:

    DBにPostgreSQLを使っていると、いくつかエラーが起きましたので、一部ソースを変更してエラーが起きないようにしました。
    変更したのは、以下の3ファイルです。
    lib/common_logic.rb
    lib/overwork_ranking_logic.rb
    lib/passed_hours_logic.rb
    以下、ずらずらと長くなってしまいましたが、差分です。
    *** ./lib/common_logic.rb.org 2009-05-23 17:31:18.000000000 +0900
    — ./lib/common_logic.rb 2009-10-06 14:01:08.000000000 +0900
    ***************
    *** 3,14 ****
    class CommonLogic
    def self.get_members(project_id)
    return Member.find_by_sql(
    ! [“select members.user_id, users.lastname from members, users
    where
    members.user_id = users.id and
    (members.project_id = :project_id or
    members.project_id in (select id from projects where parent_id = :project_id))
    ! group by user_id”,
    {:project_id => project_id}])
    end
    — 3,14 —-
    class CommonLogic
    def self.get_members(project_id)
    return Member.find_by_sql(
    ! [“select members.user_id, users.firstname as lastname from members, users
    where
    members.user_id = users.id and
    (members.project_id = :project_id or
    members.project_id in (select id from projects where parent_id = :project_id))
    ! group by members.user_id, users.firstname”,
    {:project_id => project_id}])
    end
    ***************
    *** 24,38 ****
    num = 0
    unless statuses.nil?
    statuses.each do |status|
    ! num += Issue.count(:all, :conditions => [“fixed_version_id = ? and status_id =?”, version_id, status.id])
    end
    end
    return num
    end
    def self.is_valid_version(version_id, effective_date)
    ! finish_num = get_closed_num(version_id, 1)
    ! unfinish_num = get_closed_num(version_id, 0)
    RAILS_DEFAULT_LOGGER.debug “finish_num = #{finish_num}”
    RAILS_DEFAULT_LOGGER.debug “unfinish_num = #{unfinish_num}”
    — 24,38 —-
    num = 0
    unless statuses.nil?
    statuses.each do |status|
    ! num += Issue.count(:all, :conditions => [“fixed_version_id = ? and status_id = ?”, version_id, status.id])
    end
    end
    return num
    end
    def self.is_valid_version(version_id, effective_date)
    ! finish_num = get_closed_num(version_id, “true”)
    ! unfinish_num = get_closed_num(version_id, “false”)
    RAILS_DEFAULT_LOGGER.debug “finish_num = #{finish_num}”
    RAILS_DEFAULT_LOGGER.debug “unfinish_num = #{unfinish_num}”
    *** ./lib/overwork_ranking_logic.rb.org 2009-05-23 18:13:46.000000000 +0900
    — ./lib/overwork_ranking_logic.rb 2009-10-06 13:53:13.000000000 +0900
    ***************
    *** 49,61 ****
    def self.get_users(project_id, avg)
    results =
    TimeEntry.find_by_sql(
    ! [“select users.id, users.lastname as name, sum(time_entries.hours) as hours from time_entries, users
    where time_entries.user_id = users.id and
    (time_entries.project_id = :project_id or
    time_entries.project_id in (select id from projects where parent_id = :project_id)) and
    time_entries.user_id in (select user_id from members where project_id = :project_id) and
    time_entries.spent_on between :start_date and :end_date
    ! group by users.lastname
    order by hours desc”,
    {:project_id => project_id, :start_date => get_limit_date.to_s, :end_date => (Date.today – 1).to_s}])
    — 49,61 —-
    def self.get_users(project_id, avg)
    results =
    TimeEntry.find_by_sql(
    ! [“select users.id, users.firstname as name, sum(time_entries.hours) as hours from time_entries, users
    where time_entries.user_id = users.id and
    (time_entries.project_id = :project_id or
    time_entries.project_id in (select id from projects where parent_id = :project_id)) and
    time_entries.user_id in (select user_id from members where project_id = :project_id) and
    time_entries.spent_on between :start_date and :end_date
    ! group by users.id, users.firstname
    order by hours desc”,
    {:project_id => project_id, :start_date => get_limit_date.to_s, :end_date => (Date.today – 1).to_s}])
    *** ./lib/passed_hours_logic.rb.org 2009-05-23 17:56:42.000000000 +0900
    — ./lib/passed_hours_logic.rb 2009-10-06 14:04:19.000000000 +0900
    ***************
    *** 36,42 ****
    where
    project_id = :project_id or
    project_id in (select id from projects where parent_id = :project_id)
    ! group by versions.name
    order by name asc”,
    {:project_id => project_id}])
    if results.nil?
    — 36,42 —-
    where
    project_id = :project_id or
    project_id in (select id from projects where parent_id = :project_id)
    ! group by id, name, effective_date
    order by name asc”,
    {:project_id => project_id}])
    if results.nil?
    ***************
    *** 84,90 ****
    issues.id = time_entries.issue_id and
    issues.assigned_to_id = users.id and
    issues.fixed_version_id = :version_id
    ! group by users.id”,
    {:version_id => version_id}])
    if users.nil?
    — 84,90 —-
    issues.id = time_entries.issue_id and
    issues.assigned_to_id = users.id and
    issues.fixed_version_id = :version_id
    ! group by users.id, users.lastname”,
    {:version_id => version_id}])
    if users.nil?

  5. いっつ より:

    追記。
    こちらで使用しているアカウント情報では、表示する名前は users.firstname に入れているので、users.lastname から変更した部分も含んでいます。
    #理想は、Redmineの「ユーザ名の表示書式」の通りになることですかね。