OSDN Git Service

d9d1713ab0356e76599efc9b6e6f649a571f345c
[pettanr/pettanr.git] / app / models / panel_color.rb
1 class PanelColor < ActiveRecord::Base
2   belongs_to :panel
3   
4   validates :panel_id, :numericality => {:allow_blank => true}
5   validates :z, :presence => true, :numericality => {:greater_than => 0}
6   validates :code, :presence => true, :numericality => {:greater_than_or_equal_to => 0, :less_than => 0x1000000}
7   
8   def supply_default
9   end
10   
11   def overwrite
12   end
13   
14   def visible? au
15     if au == nil
16       return false if MagicNumber['run_mode'] == 1
17     elsif au.is_a?(Author)
18     elsif au.is_a?(Admin)
19       return true
20     else
21       return false
22     end
23     self.panel.publish?
24   end
25   
26   def self.default_page_size
27     25
28   end
29   
30   def self.max_page_size
31     100
32   end
33   
34   def self.page prm = nil
35     page = prm.to_i
36     page = 1 if page < 1
37     page
38   end
39   
40   def self.page_size prm = self.default_page_size
41     page_size = prm.to_i
42     page_size = self.max_page_size if page_size > self.max_page_size
43     page_size = self.default_page_size if page_size < 1
44     page_size
45   end
46   
47   def self.list page = 1, page_size = self.default_page_size
48     opt = {}
49     opt.merge!(PanelColor.list_opt)
50     opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
51     opt.merge!({:conditions => 'panels.publish > 0', :order => 'panel_colors.updated_at desc'})
52     PanelColor.find(:all, opt)
53   end
54   
55   def self.list_opt
56     {:include => {:panel => {:author => {}} }}
57   end
58   
59   def self.list_json_opt
60     {:include => {:panel => {:include => {:author => {}}} }}
61   end
62   
63   def self.mylist au, page = 1, page_size = Author.default_panel_color_page_size
64     opt = {}
65     opt.merge!(PanelColor.list_opt)
66     opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
67     opt.merge!({:conditions => ['panels.author_id = ?', au.id], :order => 'panel_colors.updated_at desc'})
68     PanelColor.find(:all, opt)
69   end
70   
71   def self.show cid, au
72     opt = {}
73     opt.merge!(PanelColor.show_opt)
74     res = PanelColor.find(cid, opt)
75     raise ActiveRecord::Forbidden unless res.visible?(au)
76     res
77   end
78   
79   def self.show_opt
80     {:include => {:panel => {:author => {}} }}
81   end
82   
83   def self.show_json_opt
84     {:include => {:panel => {:include => {:author => {}}} }}
85   end
86   
87 end