annotate .svn/pristine/bc/bcc70efad6f9223b1d6fc6fc60db419fa714279a.svn-base @ 1082:997f6d7738f7 bug_531

In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Thu, 22 Nov 2012 18:04:17 +0000
parents cbb26bc654de
children
rev   line source
Chris@909 1 # Redmine - project management software
Chris@909 2 # Copyright (C) 2006-2011 Jean-Philippe Lang
Chris@909 3 #
Chris@909 4 # This program is free software; you can redistribute it and/or
Chris@909 5 # modify it under the terms of the GNU General Public License
Chris@909 6 # as published by the Free Software Foundation; either version 2
Chris@909 7 # of the License, or (at your option) any later version.
Chris@909 8 #
Chris@909 9 # This program is distributed in the hope that it will be useful,
Chris@909 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@909 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@909 12 # GNU General Public License for more details.
Chris@909 13 #
Chris@909 14 # You should have received a copy of the GNU General Public License
Chris@909 15 # along with this program; if not, write to the Free Software
Chris@909 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@909 17
Chris@909 18 class Board < ActiveRecord::Base
Chris@909 19 belongs_to :project
Chris@909 20 has_many :topics, :class_name => 'Message', :conditions => "#{Message.table_name}.parent_id IS NULL", :order => "#{Message.table_name}.created_on DESC"
Chris@909 21 has_many :messages, :dependent => :destroy, :order => "#{Message.table_name}.created_on DESC"
Chris@909 22 belongs_to :last_message, :class_name => 'Message', :foreign_key => :last_message_id
Chris@909 23 acts_as_list :scope => :project_id
Chris@909 24 acts_as_watchable
Chris@909 25
Chris@909 26 validates_presence_of :name, :description
Chris@909 27 validates_length_of :name, :maximum => 30
Chris@909 28 validates_length_of :description, :maximum => 255
Chris@909 29
Chris@909 30 named_scope :visible, lambda {|*args| { :include => :project,
Chris@909 31 :conditions => Project.allowed_to_condition(args.shift || User.current, :view_messages, *args) } }
Chris@909 32
Chris@909 33 def visible?(user=User.current)
Chris@909 34 !user.nil? && user.allowed_to?(:view_messages, project)
Chris@909 35 end
Chris@909 36
Chris@909 37 def to_s
Chris@909 38 name
Chris@909 39 end
Chris@909 40
Chris@909 41 def reset_counters!
Chris@909 42 self.class.reset_counters!(id)
Chris@909 43 end
Chris@909 44
Chris@909 45 # Updates topics_count, messages_count and last_message_id attributes for +board_id+
Chris@909 46 def self.reset_counters!(board_id)
Chris@909 47 board_id = board_id.to_i
Chris@909 48 update_all("topics_count = (SELECT COUNT(*) FROM #{Message.table_name} WHERE board_id=#{board_id} AND parent_id IS NULL)," +
Chris@909 49 " messages_count = (SELECT COUNT(*) FROM #{Message.table_name} WHERE board_id=#{board_id})," +
Chris@909 50 " last_message_id = (SELECT MAX(id) FROM #{Message.table_name} WHERE board_id=#{board_id})",
Chris@909 51 ["id = ?", board_id])
Chris@909 52 end
Chris@909 53 end