Skip to content
Snippets Groups Projects
Commit 88c625e3 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Issues can be unassigned now

parent 6abc6495
No related branches found
No related tags found
No related merge requests found
app/assets/images/no_avatar.png

1.3 KiB | W: 75px | H: 75px

app/assets/images/no_avatar.png

1.31 KiB | W: 75px | H: 75px

app/assets/images/no_avatar.png
app/assets/images/no_avatar.png
app/assets/images/no_avatar.png
app/assets/images/no_avatar.png
  • 2-up
  • Swipe
  • Onion skin
Loading
@@ -11,7 +11,6 @@ class Issue < ActiveRecord::Base
Loading
@@ -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,
Loading
@@ -22,6 +21,7 @@ class Issue < ActiveRecord::Base
Loading
@@ -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,
Loading
@@ -56,6 +56,10 @@ class Issue < ActiveRecord::Base
Loading
@@ -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
Loading
Loading
Loading
@@ -2,7 +2,9 @@ class IssueObserver < ActiveRecord::Observer
Loading
@@ -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)
Loading
@@ -14,7 +16,7 @@ class IssueObserver < ActiveRecord::Observer
Loading
@@ -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
Loading
Loading
Loading
@@ -14,7 +14,7 @@
Loading
@@ -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
Loading
Loading
Loading
@@ -15,12 +15,20 @@
Loading
@@ -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)
Loading
@@ -38,9 +38,10 @@
Loading
@@ -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
Loading
Loading
Loading
@@ -49,8 +49,6 @@
Loading
@@ -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
Loading
Loading
Loading
@@ -12,7 +12,6 @@ describe Issue do
Loading
@@ -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
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment