diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2006-12-10 18:35:48 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2006-12-10 18:35:48 +0000 |
commit | 55ed70529aefdb3029f5ab72169b2f7909b2f2a3 (patch) | |
tree | 1f1dbf48685483905949c121cafe36e26c7efc7c /app | |
parent | 28c6aa4e6dfe7b4261cd4b4feb50eda62ace0572 (diff) | |
download | redmine-55ed70529aefdb3029f5ab72169b2f7909b2f2a3.tar.gz redmine-55ed70529aefdb3029f5ab72169b2f7909b2f2a3.zip |
added model Comment.
comments can now be added on news.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@81 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/news_controller.rb | 16 | ||||
-rw-r--r-- | app/models/comment.rb | 6 | ||||
-rw-r--r-- | app/models/news.rb | 1 | ||||
-rw-r--r-- | app/views/news/show.rhtml | 24 | ||||
-rw-r--r-- | app/views/projects/list_news.rhtml | 3 |
5 files changed, 48 insertions, 2 deletions
diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb index b50b59dc0..544b6eb8d 100644 --- a/app/controllers/news_controller.rb +++ b/app/controllers/news_controller.rb @@ -27,7 +27,23 @@ class NewsController < ApplicationController flash[:notice] = l(:notice_successful_update) redirect_to :action => 'show', :id => @news end + end
+
+ def add_comment
+ @comment = Comment.new(params[:comment])
+ @comment.author = logged_in_user
+ if @news.comments << @comment
+ flash[:notice] = l(:label_comment_added)
+ redirect_to :action => 'show', :id => @news
+ else
+ render :action => 'show'
+ end
end +
+ def destroy_comment
+ @news.comments.find(params[:comment_id]).destroy
+ redirect_to :action => 'show', :id => @news
+ end
def destroy @news.destroy diff --git a/app/models/comment.rb b/app/models/comment.rb new file mode 100644 index 000000000..1ec7db630 --- /dev/null +++ b/app/models/comment.rb @@ -0,0 +1,6 @@ +class Comment < ActiveRecord::Base + belongs_to :commented, :polymorphic => true, :counter_cache => true + belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' + + validates_presence_of :commented, :author, :comment +end diff --git a/app/models/news.rb b/app/models/news.rb index faafa7eef..f9ba010b0 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -18,6 +18,7 @@ class News < ActiveRecord::Base
belongs_to :project
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
+ has_many :comments, :as => :commented, :dependent => true, :order => "created_on"
validates_presence_of :title, :description
diff --git a/app/views/news/show.rhtml b/app/views/news/show.rhtml index 91df09f0f..890184b1a 100644 --- a/app/views/news/show.rhtml +++ b/app/views/news/show.rhtml @@ -13,4 +13,26 @@ <% end %>
</div>
-<%= link_to_if_authorized l(:button_edit), :controller => 'news', :action => 'edit', :id => @news %>
+<p><%= link_to_if_authorized l(:button_edit), :controller => 'news', :action => 'edit', :id => @news %></p>
+
+<div id="comments" style="margin-bottom:16px;">
+<h3><%= l(:label_comment_plural) %></h3>
+<% @news.comments.each do |comment| %>
+<% next if comment.new_record? %>
+<h4><%= format_time(comment.created_on) %> - <%= comment.author.name %></h4>
+<div style="float:right;">
+ <small><%= link_to_if_authorized l(:button_delete), {:controller => 'news', :action => 'destroy_comment', :id => @news, :comment_id => comment}, :confirm => l(:text_are_you_sure), :post => true %></small>
+</div>
+<%= simple_format(auto_link(h comment.comment))%>
+<% end if @news.comments_count > 0 %>
+</div>
+
+<% if authorize_for 'news', 'add_comment' %>
+<h3><%= l(:label_comment_add) %></h3>
+<%= start_form_tag :action => 'add_comment', :id => @news %>
+<%= error_messages_for 'comment' %>
+<p><label for="comment_comment"><%= l(:field_comment) %></label><br />
+<%= text_area 'comment', 'comment', :cols => 60, :rows => 6 %></p>
+<%= submit_tag l(:button_add) %>
+<%= end_form_tag %>
+<% end %>
\ No newline at end of file diff --git a/app/views/projects/list_news.rhtml b/app/views/projects/list_news.rhtml index 6880de32f..59b737fc5 100644 --- a/app/views/projects/list_news.rhtml +++ b/app/views/projects/list_news.rhtml @@ -6,7 +6,8 @@ <% for news in @news %>
<li><%= link_to news.title, :controller => 'news', :action => 'show', :id => news %><br />
<% unless news.summary.empty? %><%= news.summary %><br /><% end %> - <em><%= news.author.name %>, <%= format_time(news.created_on) %></em><br />
+ <em><%= news.author.name %>, <%= format_time(news.created_on) %></em><br /> + <%= news.comments_count %> <%= lwr(:label_comment, news.comments_count).downcase %><br />
</li>
<% end %> </ul> |