| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  | # redMine - project management software | 
					
						
							|  |  |  | # Copyright (C) 2006  Jean-Philippe Lang | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  | # modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  | # as published by the Free Software Foundation; either version 2 | 
					
						
							|  |  |  | # of the License, or (at your option) any later version. | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | # This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  | # GNU General Public License for more details. | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | # You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  | # along with this program; if not, write to the Free Software | 
					
						
							|  |  |  | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class NewsController < ApplicationController | 
					
						
							| 
									
										
										
										
											2009-10-21 17:07:18 +00:00
										 |  |  |   default_search_scope :news | 
					
						
							| 
									
										
										
										
											2008-02-03 14:38:04 +00:00
										 |  |  |   before_filter :find_news, :except => [:new, :index, :preview] | 
					
						
							| 
									
										
										
										
											2008-07-19 07:29:05 +00:00
										 |  |  |   before_filter :find_project, :only => [:new, :preview] | 
					
						
							| 
									
										
										
										
											2008-02-03 14:38:04 +00:00
										 |  |  |   before_filter :authorize, :except => [:index, :preview] | 
					
						
							| 
									
										
										
										
											2007-11-05 22:22:51 +00:00
										 |  |  |   before_filter :find_optional_project, :only => :index | 
					
						
							|  |  |  |   accept_key_auth :index | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   def index | 
					
						
							|  |  |  |     @news_pages, @newss = paginate :news, | 
					
						
							|  |  |  |                                    :per_page => 10, | 
					
						
							| 
									
										
										
										
											2009-12-03 21:16:08 +00:00
										 |  |  |                                    :conditions => Project.allowed_to_condition(User.current, :view_news, :project => @project), | 
					
						
							| 
									
										
										
										
											2007-11-05 22:22:51 +00:00
										 |  |  |                                    :include => [:author, :project], | 
					
						
							|  |  |  |                                    :order => "#{News.table_name}.created_on DESC"     | 
					
						
							|  |  |  |     respond_to do |format| | 
					
						
							|  |  |  |       format.html { render :layout => false if request.xhr? } | 
					
						
							| 
									
										
										
										
											2009-12-23 06:27:33 +00:00
										 |  |  |       format.xml { render :xml => @newss.to_xml } | 
					
						
							|  |  |  |       format.json { render :json => @newss.to_json } | 
					
						
							| 
									
										
										
										
											2007-11-05 22:22:51 +00:00
										 |  |  |       format.atom { render_feed(@newss, :title => (@project ? @project.name : Setting.app_title) + ": #{l(:label_news_plural)}") } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2006-06-28 18:11:03 +00:00
										 |  |  |   def show | 
					
						
							| 
									
										
										
										
											2008-03-05 15:41:54 +00:00
										 |  |  |     @comments = @news.comments | 
					
						
							|  |  |  |     @comments.reverse! if User.current.wants_comments_in_reverse_order? | 
					
						
							| 
									
										
										
										
											2006-06-28 18:11:03 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-03 14:38:04 +00:00
										 |  |  |   def new | 
					
						
							|  |  |  |     @news = News.new(:project => @project, :author => User.current) | 
					
						
							|  |  |  |     if request.post? | 
					
						
							|  |  |  |       @news.attributes = params[:news] | 
					
						
							|  |  |  |       if @news.save | 
					
						
							|  |  |  |         flash[:notice] = l(:notice_successful_create) | 
					
						
							|  |  |  |         redirect_to :controller => 'news', :action => 'index', :project_id => @project | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2006-06-28 18:11:03 +00:00
										 |  |  |   def edit | 
					
						
							|  |  |  |     if request.post? and @news.update_attributes(params[:news]) | 
					
						
							| 
									
										
										
										
											2006-07-30 10:47:02 +00:00
										 |  |  |       flash[:notice] = l(:notice_successful_update) | 
					
						
							| 
									
										
										
										
											2006-06-28 18:11:03 +00:00
										 |  |  |       redirect_to :action => 'show', :id => @news | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |    | 
					
						
							|  |  |  |   def add_comment | 
					
						
							|  |  |  |     @comment = Comment.new(params[:comment]) | 
					
						
							| 
									
										
										
										
											2007-11-20 15:40:16 +00:00
										 |  |  |     @comment.author = User.current | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     if @news.comments << @comment | 
					
						
							|  |  |  |       flash[:notice] = l(:label_comment_added) | 
					
						
							|  |  |  |       redirect_to :action => 'show', :id => @news | 
					
						
							|  |  |  |     else | 
					
						
							| 
									
										
										
										
											2009-07-18 07:51:17 +00:00
										 |  |  |       show | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |       render :action => 'show' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def destroy_comment | 
					
						
							|  |  |  |     @news.comments.find(params[:comment_id]).destroy | 
					
						
							|  |  |  |     redirect_to :action => 'show', :id => @news | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2006-06-28 18:11:03 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-01-28 00:00:21 +00:00
										 |  |  |   def destroy | 
					
						
							|  |  |  |     @news.destroy | 
					
						
							| 
									
										
										
										
											2007-11-05 22:22:51 +00:00
										 |  |  |     redirect_to :action => 'index', :project_id => @project | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   end | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2008-02-03 14:38:04 +00:00
										 |  |  |   def preview | 
					
						
							|  |  |  |     @text = (params[:news] ? params[:news][:description] : nil) | 
					
						
							|  |  |  |     render :partial => 'common/preview' | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  | private | 
					
						
							| 
									
										
										
										
											2008-02-03 14:38:04 +00:00
										 |  |  |   def find_news | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     @news = News.find(params[:id]) | 
					
						
							|  |  |  |     @project = @news.project | 
					
						
							|  |  |  |   rescue ActiveRecord::RecordNotFound | 
					
						
							|  |  |  |     render_404 | 
					
						
							| 
									
										
										
										
											2007-11-05 22:22:51 +00:00
										 |  |  |   end | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2008-02-03 14:38:04 +00:00
										 |  |  |   def find_project | 
					
						
							|  |  |  |     @project = Project.find(params[:project_id]) | 
					
						
							|  |  |  |   rescue ActiveRecord::RecordNotFound | 
					
						
							|  |  |  |     render_404 | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2007-11-05 22:22:51 +00:00
										 |  |  |   def find_optional_project | 
					
						
							|  |  |  |     return true unless params[:project_id] | 
					
						
							|  |  |  |     @project = Project.find(params[:project_id]) | 
					
						
							|  |  |  |     authorize | 
					
						
							|  |  |  |   rescue ActiveRecord::RecordNotFound | 
					
						
							|  |  |  |     render_404 | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2006-06-28 18:11:03 +00:00
										 |  |  | end |