git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2682 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/0.9.0
@@ -35,19 +35,29 @@ class BoardsController < ApplicationController | |||
end | |||
def show | |||
sort_init 'updated_on', 'desc' | |||
sort_update 'created_on' => "#{Message.table_name}.created_on", | |||
'replies' => "#{Message.table_name}.replies_count", | |||
'updated_on' => "#{Message.table_name}.updated_on" | |||
@topic_count = @board.topics.count | |||
@topic_pages = Paginator.new self, @topic_count, per_page_option, params['page'] | |||
@topics = @board.topics.find :all, :order => ["#{Message.table_name}.sticky DESC", sort_clause].compact.join(', '), | |||
:include => [:author, {:last_reply => :author}], | |||
:limit => @topic_pages.items_per_page, | |||
:offset => @topic_pages.current.offset | |||
@message = Message.new | |||
render :action => 'show', :layout => !request.xhr? | |||
respond_to do |format| | |||
format.html { | |||
sort_init 'updated_on', 'desc' | |||
sort_update 'created_on' => "#{Message.table_name}.created_on", | |||
'replies' => "#{Message.table_name}.replies_count", | |||
'updated_on' => "#{Message.table_name}.updated_on" | |||
@topic_count = @board.topics.count | |||
@topic_pages = Paginator.new self, @topic_count, per_page_option, params['page'] | |||
@topics = @board.topics.find :all, :order => ["#{Message.table_name}.sticky DESC", sort_clause].compact.join(', '), | |||
:include => [:author, {:last_reply => :author}], | |||
:limit => @topic_pages.items_per_page, | |||
:offset => @topic_pages.current.offset | |||
@message = Message.new | |||
render :action => 'show', :layout => !request.xhr? | |||
} | |||
format.atom { | |||
@messages = @board.messages.find :all, :order => 'created_on DESC', | |||
:include => [:author, :board], | |||
:limit => Setting.feeds_limit.to_i | |||
render_feed(@messages, :title => "#{@project}: #{@board}") | |||
} | |||
end | |||
end | |||
verify :method => :post, :only => [ :destroy ], :redirect_to => { :action => :index } |
@@ -27,6 +27,10 @@ class Board < ActiveRecord::Base | |||
validates_length_of :name, :maximum => 30 | |||
validates_length_of :description, :maximum => 255 | |||
def to_s | |||
name | |||
end | |||
def reset_counters! | |||
self.class.reset_counters!(id) | |||
end |
@@ -59,4 +59,12 @@ | |||
<p class="nodata"><%= l(:label_no_data) %></p> | |||
<% end %> | |||
<% other_formats_links do |f| %> | |||
<%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %> | |||
<% end %> | |||
<% html_title h(@board.name) %> | |||
<% content_for :header_tags do %> | |||
<%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@project}: #{@board}") %> | |||
<% end %> |
@@ -86,6 +86,7 @@ ActionController::Routing::Routes.draw do |map| | |||
board_views.connect 'projects/:project_id/boards', :action => 'index' | |||
board_views.connect 'projects/:project_id/boards/new', :action => 'new' | |||
board_views.connect 'projects/:project_id/boards/:id', :action => 'show' | |||
board_views.connect 'projects/:project_id/boards/:id.:format', :action => 'show' | |||
board_views.connect 'projects/:project_id/boards/:id/edit', :action => 'edit' | |||
end | |||
board_routes.with_options :conditions => {:method => :post} do |board_actions| |
@@ -84,6 +84,10 @@ class BoardsControllerTest < Test::Unit::TestCase | |||
{:method => :get, :path => '/projects/world_domination/boards/44'}, | |||
:controller => 'boards', :action => 'show', :id => '44', :project_id => 'world_domination' | |||
) | |||
assert_routing( | |||
{:method => :get, :path => '/projects/world_domination/boards/44.atom'}, | |||
:controller => 'boards', :action => 'show', :id => '44', :project_id => 'world_domination', :format => 'atom' | |||
) | |||
end | |||
def test_show | |||
@@ -95,6 +99,15 @@ class BoardsControllerTest < Test::Unit::TestCase | |||
assert_not_nil assigns(:topics) | |||
end | |||
def test_show_atom | |||
get :show, :project_id => 1, :id => 1, :format => 'atom' | |||
assert_response :success | |||
assert_template 'common/feed.atom' | |||
assert_not_nil assigns(:board) | |||
assert_not_nil assigns(:project) | |||
assert_not_nil assigns(:messages) | |||
end | |||
def test_edit_routing | |||
assert_routing( | |||
{:method => :get, :path => '/projects/world_domination/boards/44/edit'}, |