File: app/controllers/boards_controller.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  class: BoardsController#18
includes
  SortHelper   
inherits from
  ApplicationController   
has properties
method: index #27
method: show #36
method: new #62
method: create #67
method: edit #78
method: update #81
method: destroy #90
method: redirect_to_settings_in_projects #96
method: find_board_if_available #100

Class Hierarchy

Code

   1  # Redmine - project management software
   2  # Copyright (C) 2006-2011  Jean-Philippe Lang
   3  #
   4  # This program is free software; you can redistribute it and/or
   5  # modify it under the terms of the GNU General Public License
   6  # as published by the Free Software Foundation; either version 2
   7  # of the License, or (at your option) any later version.
   8  #
   9  # This program is distributed in the hope that it will be useful,
  10  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  # GNU General Public License for more details.
  13  #
  14  # You should have received a copy of the GNU General Public License
  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.
  17 
  18  class BoardsController < ApplicationController
  19    default_search_scope :messages
  20    before_filter :find_project_by_project_id, :find_board_if_available, :authorize
  21    accept_rss_auth :index, :show
  22 
  23    helper :sort
  24    include SortHelper
  25    helper :watchers
  26 
  27    def index
  28      @boards = @project.boards
  29      # show the board if there is only one
  30      if @boards.size == 1
  31        @board = @boards.first
  32        show
  33      end
  34    end
  35 
  36    def show
  37      respond_to do |format|
  38        format.html {
  39          sort_init 'updated_on', 'desc'
  40          sort_update     'created_on' => "#{Message.table_name}.created_on",
  41                      'replies' => "#{Message.table_name}.replies_count",
  42                      'updated_on' => "#{Message.table_name}.updated_on"
  43 
  44          @topic_count = @board.topics.count
  45          @topic_pages = Paginator.new self, @topic_count, per_page_option, params['page']
  46          @topics =  @board.topics.find :all, :order => ["#{Message.table_name}.sticky DESC", sort_clause].compact.join(', '),
  47                                        :include => [:author, {:last_reply => :author}],
  48                                        :limit  =>  @topic_pages.items_per_page,
  49                                        :offset =>  @topic_pages.current.offset
  50          @message = Message.new(:board => @board)
  51          render :action => 'show', :layout => !request.xhr?
  52        }
  53        format.atom {
  54          @messages = @board.messages.find :all, :order => 'created_on DESC',
  55                                                 :include => [:author, :board],
  56                                                 :limit => Setting.feeds_limit.to_i
  57          render_feed(@messages, :title => "#{@project}: #{@board}")
  58        }
  59      end
  60    end
  61 
  62    def new
  63      @board = @project.boards.build
  64      @board.safe_attributes = params[:board]
  65    end
  66 
  67    def create
  68      @board = @project.boards.build
  69      @board.safe_attributes = params[:board]
  70      if @board.save
  71        flash[:notice] = l(:notice_successful_create)
  72        redirect_to_settings_in_projects
  73      else
  74        render :action => 'new'
  75      end
  76    end
  77 
  78    def edit
  79    end
  80 
  81    def update
  82      @board.safe_attributes = params[:board]
  83      if @board.save
  84        redirect_to_settings_in_projects
  85      else
  86        render :action => 'edit'
  87      end
  88    end
  89 
  90    def destroy
  91      @board.destroy
  92      redirect_to_settings_in_projects
  93    end
  94 
  95  private
  96    def redirect_to_settings_in_projects
  97      redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'boards'
  98    end
  99 
 100    def find_board_if_available
 101      @board = @project.boards.find(params[:id]) if params[:id]
 102    rescue ActiveRecord::RecordNotFound
 103      render_404
 104    end
 105  end