summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2006-12-10 18:35:48 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2006-12-10 18:35:48 +0000
commit55ed70529aefdb3029f5ab72169b2f7909b2f2a3 (patch)
tree1f1dbf48685483905949c121cafe36e26c7efc7c /app
parent28c6aa4e6dfe7b4261cd4b4feb50eda62ace0572 (diff)
downloadredmine-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.rb16
-rw-r--r--app/models/comment.rb6
-rw-r--r--app/models/news.rb1
-rw-r--r--app/views/news/show.rhtml24
-rw-r--r--app/views/projects/list_news.rhtml3
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 />&nbsp;
+ <em><%= news.author.name %>, <%= format_time(news.created_on) %></em><br />
+ <%= news.comments_count %> <%= lwr(:label_comment, news.comments_count).downcase %><br />&nbsp;
</li>
<% end %>
</ul>