Issues can be unassigned now

This commit is contained in:
randx 2012-06-26 21:47:25 +03:00
parent 6abc649590
commit 88c625e3f7
8 changed files with 29 additions and 17 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -11,7 +11,6 @@ class Issue < ActiveRecord::Base
attr_accessor :author_id_of_changes attr_accessor :author_id_of_changes
validates_presence_of :project_id validates_presence_of :project_id
validates_presence_of :assignee_id
validates_presence_of :author_id validates_presence_of :author_id
delegate :name, delegate :name,
@ -22,6 +21,7 @@ class Issue < ActiveRecord::Base
delegate :name, delegate :name,
:email, :email,
:to => :assignee, :to => :assignee,
:allow_nil => true,
:prefix => true :prefix => true
validates :title, validates :title,
@ -56,6 +56,10 @@ class Issue < ActiveRecord::Base
today? && created_at == updated_at today? && created_at == updated_at
end end
def is_assigned?
!!assignee_id
end
def is_being_reassigned? def is_being_reassigned?
assignee_id_changed? assignee_id_changed?
end end

View file

@ -2,7 +2,9 @@ class IssueObserver < ActiveRecord::Observer
cattr_accessor :current_user cattr_accessor :current_user
def after_create(issue) def after_create(issue)
Notify.new_issue_email(issue.id).deliver if issue.assignee != current_user if issue.assignee && issue.assignee != current_user
Notify.new_issue_email(issue.id).deliver
end
end end
def after_update(issue) def after_update(issue)
@ -14,7 +16,7 @@ class IssueObserver < ActiveRecord::Observer
protected protected
def send_reassigned_email(issue) def send_reassigned_email(issue)
recipient_ids = [issue.assignee_id, issue.assignee_id_was].keep_if {|id| id != current_user.id } recipient_ids = [issue.assignee_id, issue.assignee_id_was].keep_if {|id| id && id != current_user.id }
recipient_ids.each do |recipient_id| recipient_ids.each do |recipient_id|
Notify.reassigned_issue_email(recipient_id, issue.id, issue.assignee_id_was).deliver Notify.reassigned_issue_email(recipient_id, issue.id, issue.assignee_id_was).deliver

View file

@ -14,7 +14,7 @@
= f.text_field :title, :maxlength => 255, :class => "xxlarge" = f.text_field :title, :maxlength => 255, :class => "xxlarge"
.issue_middle_block .issue_middle_block
.issue_assignee .issue_assignee
= f.label :assignee_id, "Assign to *" = f.label :assignee_id, "Assign to"
.input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Assign to user" }) .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Assign to user" })
.issue_milestone .issue_milestone
= f.label :milestone_id = f.label :milestone_id

View file

@ -15,12 +15,20 @@
%i.icon-edit %i.icon-edit
Edit Edit
= image_tag gravatar_icon(issue.assignee_email), :class => "avatar" - if issue.assignee
%span.update-author = image_tag gravatar_icon(issue.assignee_email), :class => "avatar"
assigned to %span.update-author
%strong= issue.assignee_name assigned to
- if issue.upvotes > 0 %strong= issue.assignee_name
%span.badge.badge-success= "+#{issue.upvotes}" - if issue.upvotes > 0
%span.badge.badge-success= "+#{issue.upvotes}"
- else
= image_tag "no_avatar.png", :class => "avatar"
%span.update-author
Unassigned
- if issue.upvotes > 0
%span.badge.badge-success= "+#{issue.upvotes}"
= link_to project_issue_path(issue.project, issue) do = link_to project_issue_path(issue.project, issue) do
%p.row_title= truncate(issue.title, :length => 100) %p.row_title= truncate(issue.title, :length => 100)

View file

@ -38,9 +38,10 @@
= image_tag gravatar_icon(@issue.author_email), :width => 16, :class => "lil_av" = image_tag gravatar_icon(@issue.author_email), :width => 16, :class => "lil_av"
%strong.author= link_to_issue_author(@issue) %strong.author= link_to_issue_author(@issue)
%cite.cgray and currently assigned to - if @issue.assignee
= image_tag gravatar_icon(@issue.assignee_email), :width => 16, :class => "lil_av" %cite.cgray and currently assigned to
%strong.author= link_to_issue_assignee(@issue) = image_tag gravatar_icon(@issue.assignee_email), :width => 16, :class => "lil_av"
%strong.author= link_to_issue_assignee(@issue)
- if @issue.milestone - if @issue.milestone
- milestone = @issue.milestone - milestone = @issue.milestone

View file

@ -49,8 +49,6 @@
%tr %tr
%td %td
= link_to [@project, issue] do = link_to [@project, issue] do
= image_tag gravatar_icon(issue.assignee_email, 16), :width => "16"
&nbsp;
%span.badge.badge-info ##{issue.id} %span.badge.badge-info ##{issue.id}
&ndash; &ndash;
= truncate issue.title, :length => 60 = truncate issue.title, :length => 60

View file

@ -12,7 +12,6 @@ describe Issue do
it { should validate_presence_of(:title) } it { should validate_presence_of(:title) }
it { should validate_presence_of(:author_id) } it { should validate_presence_of(:author_id) }
it { should validate_presence_of(:project_id) } it { should validate_presence_of(:project_id) }
it { should validate_presence_of(:assignee_id) }
end end
describe "Scope" do describe "Scope" do