diff --git a/app/controllers/notificationcomments_controller.rb b/app/controllers/notificationcomments_controller.rb index 53563a53..6e4b12eb 100644 --- a/app/controllers/notificationcomments_controller.rb +++ b/app/controllers/notificationcomments_controller.rb @@ -1,35 +1,27 @@ class NotificationcommentsController < ApplicationController - default_search_scope :contestnotifications - model_object Contestnotifications - before_filter :find_model_object - before_filter :find_contest_from_association - before_filter :authorize + # default_search_scope :contestnotifications + # model_object Contestnotifications + # before_filter :authorize def create #raise Unauthorized unless @contestnotifications.notificationcommentable? + @contest = Contest.find(params[:contest_id]) + @contestnotification = Contestnotification.find(params[:contestnotification_id]) - @notificationcomment = Notificationcomment.new - @notificationcomment.safe_attributes = params[:notificationcomment] - @notificationcomment.author = User.current - if @contestnotifications.notificationcomments << @notificationcomment + @notificaioncomment = Notificationcomment.new + @notificaioncomment.safe_attributes = params[:notificaioncomment] + @notificaioncomment.author = User.current + if @contestnotification.notificationcomments << @notificaioncomment flash[:notice] = l(:label_comment_added) end - redirect_to contest_contestnotification_path(@contestnotifications) + #redirect_to contest_contestnotification_notificationcomment_path(@contest, @contestnotification, @notificaioncomment) + redirect_to contest_contestnotification_path(@contest, @contestnotification) end def destroy - @contestnotifications.notificationcomments.find(params[:notificationcomment_id]).destroy + @contestnotifications.notificaioncomments.find(params[:notificaioncomment_id]).destroy redirect_to contest_contestnotification_path(@contestnotifications) end - - private - - def find_model_object - super - @contestnotifications = @object - @notificationcomment = nil - @contestnotifications - end end diff --git a/app/models/contestnotification.rb b/app/models/contestnotification.rb index e9f6c9a6..c96a61d9 100644 --- a/app/models/contestnotification.rb +++ b/app/models/contestnotification.rb @@ -1,63 +1,63 @@ -class Contestnotification < ActiveRecord::Base - #attr_accessible :author_id, :notificationcomments_count, :contest_id, :description, :summary, :title - - include Redmine::SafeAttributes - #Contestnotification::Notificationcomment - belongs_to :contest - belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' - has_many :notificationcomments, :as => :notificationcommented, :dependent => :delete_all, :order => "created_at" - # fq - has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy - - validates_presence_of :title, :description - validates_length_of :title, :maximum => 60 - validates_length_of :summary, :maximum => 255 - - acts_as_attachable :delete_permission => :manage_contestnotifications - acts_as_searchable :columns => ['title', 'summary', "#{table_name}.description"], :include => :contest - acts_as_event :url => Proc.new {|o| {:controller => 'contestnotifications', :action => 'show', :id => o.id}} - acts_as_activity_provider :find_options => {:include => [:contest, :author]}, - :author_key => :author_id - acts_as_watchable - - after_create :add_author_as_watcher - - after_create :act_as_activity - - - scope :visible, lambda {|*args| - nil - #includes(:contest).where(Contest.allowed_to_condition(args.shift || User.current, :view_contestnotifications, *args)) - } - - safe_attributes 'title', 'summary', 'description' - - def visible?(user=User.current) - !user.nil? && user.allowed_to?(:view_contestnotifications, contest) - end - - # Returns true if the news can be commented by user - def notificationcommentable?(user=User.current) - user.allowed_to?(:notificationcomment_contestnotifications, contest) - end - - def recipients - #contest.users.select {|user| user.notify_about?(self)}.map(&:mail) - end - - # returns latest news for contests visible by user - def self.latest(user = User.current, count = 5) - visible(user).includes([:author, :contest]).order("#{Contestnotification.table_name}.created_at DESC").limit(count).all - end - - private - - def add_author_as_watcher - #Watcher.create(:watchable => self, :user => author) - end - ## fq - def act_as_activity - self.acts << Activity.new(:user_id => self.author_id) - end - -end +class Contestnotification < ActiveRecord::Base + #attr_accessible :author_id, :notificationcomments_count, :contest_id, :description, :summary, :title + + include Redmine::SafeAttributes + #Contestnotification::Notificationcomment + belongs_to :contest + belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' + has_many :notificationcomments, :dependent => :delete_all, :order => "created_at" + # fq + has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy + + validates_presence_of :title, :description + validates_length_of :title, :maximum => 60 + validates_length_of :summary, :maximum => 255 + + acts_as_attachable :delete_permission => :manage_contestnotifications + acts_as_searchable :columns => ['title', 'summary', "#{table_name}.description"], :include => :contest + acts_as_event :url => Proc.new {|o| {:controller => 'contestnotifications', :action => 'show', :id => o.id}} + acts_as_activity_provider :find_options => {:include => [:contest, :author]}, + :author_key => :author_id + acts_as_watchable + + after_create :add_author_as_watcher + + after_create :act_as_activity + + + scope :visible, lambda {|*args| + nil + #includes(:contest).where(Contest.allowed_to_condition(args.shift || User.current, :view_contestnotifications, *args)) + } + + safe_attributes 'title', 'summary', 'description' + + def visible?(user=User.current) + !user.nil? && user.allowed_to?(:view_contestnotifications, contest) + end + + # Returns true if the news can be commented by user + def notificationcommentable?(user=User.current) + user.allowed_to?(:notificationcomment_contestnotifications, contest) + end + + def recipients + #contest.users.select {|user| user.notify_about?(self)}.map(&:mail) + end + + # returns latest news for contests visible by user + def self.latest(user = User.current, count = 5) + visible(user).includes([:author, :contest]).order("#{Contestnotification.table_name}.created_at DESC").limit(count).all + end + + private + + def add_author_as_watcher + #Watcher.create(:watchable => self, :user => author) + end + ## fq + def act_as_activity + self.acts << Activity.new(:user_id => self.author_id) + end + +end diff --git a/app/models/notificationcomment.rb b/app/models/notificationcomment.rb index f8eb7020..9cc658f2 100644 --- a/app/models/notificationcomment.rb +++ b/app/models/notificationcomment.rb @@ -2,10 +2,10 @@ class Notificationcomment < ActiveRecord::Base attr_accessible :author_id, :notificationcommented_id, :notificationcommented_type, :notificationcomments include Redmine::SafeAttributes - belongs_to :notificationcommented, :polymorphic => true, :counter_cache => true + belongs_to :notificationcommented, :polymorphic => true#, :counter_cache => true belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' validates_presence_of :notificationcommented, :author, :notificationcomments - safe_attributes 'notificationcomments' + # safe_attributes 'notificationcomments' end diff --git a/app/views/contestnotifications/show.html.erb b/app/views/contestnotifications/show.html.erb index 1a30a93e..dab3761b 100644 --- a/app/views/contestnotifications/show.html.erb +++ b/app/views/contestnotifications/show.html.erb @@ -1,88 +1,88 @@ - -
- <%= toggle_link l(:label_comment_add), "add_notificationcomment_form", :focus => "notificationcomment_notificationcomments" %> -
- <%= form_tag({:controller => 'notificationcomments', :action => 'create', :id => @contestnotification}, :id => "add_notificationcomment_form", :style => "display:none;") do %> -- <%= submit_tag l(:button_add) %> -
- <% end %> - - - <% html_title @contestnotification.title -%> - - <% content_for :header_tags do %> - <%= stylesheet_link_tag 'scm' %> - <% end %> - - - -<%= image_tag(url_to_avatar(notificationcomment.author), :class => "avatar")%> | -
-
|
-
+ <%= toggle_link l(:label_comment_add), "add_notificationcomment_form", :focus => "notificationcomment_notificationcomments" %> +
+ <%= form_tag( contest_contestnotification_notificationcomments_path(@contest, @contestnotification) , :id => "add_notificationcomment_form", :style => "display:none;") do %> ++ <%= submit_tag l(:button_add) %> +
+ <% end %> + + + <% html_title @contestnotification.title -%> + + <% content_for :header_tags do %> + <%= stylesheet_link_tag 'scm' %> + <% end %> + + + +<%= image_tag(url_to_avatar(notificationcomment.author), :class => "avatar")%> | +
+
|
+