Mercurial > hg > soundsoftware-site
comparison app/controllers/boards_controller.rb @ 1115:433d4f72a19b redmine-2.2
Update to Redmine SVN revision 11137 on 2.2-stable branch
author | Chris Cannam |
---|---|
date | Mon, 07 Jan 2013 12:01:42 +0000 |
parents | 5f33065ddc4b |
children | 3e4c3460b6ca |
comparison
equal
deleted
inserted
replaced
929:5f33065ddc4b | 1115:433d4f72a19b |
---|---|
1 # Redmine - project management software | 1 # Redmine - project management software |
2 # Copyright (C) 2006-2011 Jean-Philippe Lang | 2 # Copyright (C) 2006-2012 Jean-Philippe Lang |
3 # | 3 # |
4 # This program is free software; you can redistribute it and/or | 4 # This program is free software; you can redistribute it and/or |
5 # modify it under the terms of the GNU General Public License | 5 # modify it under the terms of the GNU General Public License |
6 # as published by the Free Software Foundation; either version 2 | 6 # as published by the Free Software Foundation; either version 2 |
7 # of the License, or (at your option) any later version. | 7 # of the License, or (at your option) any later version. |
15 # along with this program; if not, write to the Free Software | 15 # along with this program; if not, write to the Free Software |
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
17 | 17 |
18 class BoardsController < ApplicationController | 18 class BoardsController < ApplicationController |
19 default_search_scope :messages | 19 default_search_scope :messages |
20 before_filter :find_project, :find_board_if_available, :authorize | 20 before_filter :find_project_by_project_id, :find_board_if_available, :authorize |
21 accept_rss_auth :index, :show | 21 accept_rss_auth :index, :show |
22 | 22 |
23 helper :messages | |
24 include MessagesHelper | |
25 helper :sort | 23 helper :sort |
26 include SortHelper | 24 include SortHelper |
27 helper :watchers | 25 helper :watchers |
28 include WatchersHelper | |
29 | 26 |
30 def index | 27 def index |
31 @boards = @project.boards | 28 @boards = @project.boards.includes(:last_message => :author).all |
32 # show the board if there is only one | 29 # show the board if there is only one |
33 if @boards.size == 1 | 30 if @boards.size == 1 |
34 @board = @boards.first | 31 @board = @boards.first |
35 show | 32 show |
36 end | 33 end |
44 'replies' => "#{Message.table_name}.replies_count", | 41 'replies' => "#{Message.table_name}.replies_count", |
45 'updated_on' => "#{Message.table_name}.updated_on" | 42 'updated_on' => "#{Message.table_name}.updated_on" |
46 | 43 |
47 @topic_count = @board.topics.count | 44 @topic_count = @board.topics.count |
48 @topic_pages = Paginator.new self, @topic_count, per_page_option, params['page'] | 45 @topic_pages = Paginator.new self, @topic_count, per_page_option, params['page'] |
49 @topics = @board.topics.find :all, :order => ["#{Message.table_name}.sticky DESC", sort_clause].compact.join(', '), | 46 @topics = @board.topics.reorder("#{Message.table_name}.sticky DESC").order(sort_clause).all( |
50 :include => [:author, {:last_reply => :author}], | 47 :include => [:author, {:last_reply => :author}], |
51 :limit => @topic_pages.items_per_page, | 48 :limit => @topic_pages.items_per_page, |
52 :offset => @topic_pages.current.offset | 49 :offset => @topic_pages.current.offset) |
53 @message = Message.new | 50 @message = Message.new(:board => @board) |
54 render :action => 'show', :layout => !request.xhr? | 51 render :action => 'show', :layout => !request.xhr? |
55 } | 52 } |
56 format.atom { | 53 format.atom { |
57 @messages = @board.messages.find :all, :order => 'created_on DESC', | 54 @messages = @board.messages.find :all, :order => 'created_on DESC', |
58 :include => [:author, :board], | 55 :include => [:author, :board], |
60 render_feed(@messages, :title => "#{@project}: #{@board}") | 57 render_feed(@messages, :title => "#{@project}: #{@board}") |
61 } | 58 } |
62 end | 59 end |
63 end | 60 end |
64 | 61 |
65 verify :method => :post, :only => [ :destroy ], :redirect_to => { :action => :index } | 62 def new |
63 @board = @project.boards.build | |
64 @board.safe_attributes = params[:board] | |
65 end | |
66 | 66 |
67 def new | 67 def create |
68 @board = Board.new | 68 @board = @project.boards.build |
69 @board.safe_attributes = params[:board] | 69 @board.safe_attributes = params[:board] |
70 @board.project = @project | 70 if @board.save |
71 if request.post? && @board.save | |
72 flash[:notice] = l(:notice_successful_create) | 71 flash[:notice] = l(:notice_successful_create) |
73 redirect_to_settings_in_projects | 72 redirect_to_settings_in_projects |
73 else | |
74 render :action => 'new' | |
74 end | 75 end |
75 end | 76 end |
76 | 77 |
77 def edit | 78 def edit |
79 end | |
80 | |
81 def update | |
78 @board.safe_attributes = params[:board] | 82 @board.safe_attributes = params[:board] |
79 if request.post? && @board.save | 83 if @board.save |
80 redirect_to_settings_in_projects | 84 redirect_to_settings_in_projects |
85 else | |
86 render :action => 'edit' | |
81 end | 87 end |
82 end | 88 end |
83 | 89 |
84 def destroy | 90 def destroy |
85 @board.destroy | 91 @board.destroy |
89 private | 95 private |
90 def redirect_to_settings_in_projects | 96 def redirect_to_settings_in_projects |
91 redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'boards' | 97 redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'boards' |
92 end | 98 end |
93 | 99 |
94 def find_project | |
95 @project = Project.find(params[:project_id]) | |
96 rescue ActiveRecord::RecordNotFound | |
97 render_404 | |
98 end | |
99 | |
100 def find_board_if_available | 100 def find_board_if_available |
101 @board = @project.boards.find(params[:id]) if params[:id] | 101 @board = @project.boards.find(params[:id]) if params[:id] |
102 rescue ActiveRecord::RecordNotFound | 102 rescue ActiveRecord::RecordNotFound |
103 render_404 | 103 render_404 |
104 end | 104 end |