From 3e695acfa2f4035431cb325645b3114d06e43105 Mon Sep 17 00:00:00 2001
From: Andrew8xx8 <avk@8xx8.ru>
Date: Mon, 25 Mar 2013 15:58:09 +0400
Subject: [PATCH] Notes fixed

---
 Gemfile.lock                           | 28 +++++++++++++-------------
 app/models/event.rb                    |  4 ++++
 app/models/note.rb                     |  6 ++++++
 app/models/snippet.rb                  |  1 +
 app/views/events/event/_note.html.haml |  4 ++++
 5 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index f2800771f61..ffbef9488e4 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,3 +1,17 @@
+GIT
+  remote: https://github.com/ctran/annotate_models.git
+  revision: be4e26825b521f0b2d86b181e2dff89901aa9b1e
+  specs:
+    annotate (2.6.0.beta1)
+      activerecord (>= 2.3.0)
+      rake (>= 0.8.7)
+
+GIT
+  remote: https://github.com/gitlabhq/raphael-rails.git
+  revision: cb2c92a040b9b941a5f1aa1ea866cc26e944fe58
+  specs:
+    raphael-rails (2.1.0)
+
 GIT
   remote: https://github.com/gollum/gollum.git
   revision: 5dcd3c8c8f68158e43ff79861279088ee56d0ebe
@@ -15,20 +29,6 @@ GIT
       stringex (~> 1.5.1)
       useragent (~> 0.4.16)
 
-GIT
-  remote: https://github.com/ctran/annotate_models.git
-  revision: be4e26825b521f0b2d86b181e2dff89901aa9b1e
-  specs:
-    annotate (2.6.0.beta1)
-      activerecord (>= 2.3.0)
-      rake (>= 0.8.7)
-
-GIT
-  remote: https://github.com/gitlabhq/raphael-rails.git
-  revision: cb2c92a040b9b941a5f1aa1ea866cc26e944fe58
-  specs:
-    raphael-rails (2.1.0)
-
 GEM
   remote: https://rubygems.org/
   specs:
diff --git a/app/models/event.rb b/app/models/event.rb
index ae14454c59a..d39445c4ffe 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -259,6 +259,10 @@ class Event < ActiveRecord::Base
     target.noteable_type == "Commit"
   end
 
+  def note_project_snippet?
+    target.noteable_type == "Snippet"
+  end
+
   def note_target
     target.noteable
   end
diff --git a/app/models/note.rb b/app/models/note.rb
index f56f999fda1..2f3b059918a 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -170,4 +170,10 @@ class Note < ActiveRecord::Base
       "wall"
     end
   end
+
+  # FIXME: Hack for polymorphic associations with STI
+  #        For more information wisit http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#label-Polymorphic+Associations
+  def noteable_type=(sType)
+    super(sType.to_s.classify.constantize.base_class.to_s)
+  end
 end
diff --git a/app/models/snippet.rb b/app/models/snippet.rb
index 5d09c6b6e47..1b37ffe8339 100644
--- a/app/models/snippet.rb
+++ b/app/models/snippet.rb
@@ -20,6 +20,7 @@ class Snippet < ActiveRecord::Base
   attr_accessible :title, :content, :file_name, :expires_at, :private
 
   belongs_to :author, class_name: "User"
+
   has_many :notes, as: :noteable, dependent: :destroy
 
   delegate :name, :email, to: :author, prefix: true, allow_nil: true
diff --git a/app/views/events/event/_note.html.haml b/app/views/events/event/_note.html.haml
index 8bcfa95ff62..81b8ff9bf24 100644
--- a/app/views/events/event/_note.html.haml
+++ b/app/views/events/event/_note.html.haml
@@ -5,6 +5,10 @@
     - if event.note_commit?
       = event.note_target_type
       = link_to event.note_short_commit_id, project_commit_path(event.project, event.note_commit_id), class: "commit_short_id"
+    - if event.note_project_snippet?
+      = link_to project_snippet_path(event.project, event.note_target) do
+        %strong
+          #{event.note_target_type} ##{truncate event.note_target_id}
     - else
       = link_to [event.project, event.note_target] do
         %strong
-- 
GitLab