OSDN Git Service

fix owner
[pettanr/pettanr.git] / app / models / scroll_panel.rb
1 class ScrollPanel < Peta::Leaf
2   load_manifest
3   belongs_to :author
4   belongs_to :panel
5   belongs_to :scroll
6   
7   validates :scroll_id, :presence => true, :numericality => true, :existence => {:both => false}
8   validates :panel_id, :presence => true, :numericality => true, :existence => {:both => false}
9   validates :author_id, :presence => true, :numericality => true, :existence => {:both => false}
10   validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0}
11   
12   def supply_default
13     self.scroll_id = nil
14     self.panel_id = nil
15     self.t = nil
16   end
17   
18   def overwrite operators
19     return false unless operators.author
20     self.author_id = operators.author.id
21   end
22   
23   def self.public_list_order
24     'scroll_panels.updated_at desc'
25   end
26   
27   def self.public_list_where
28     'scrolls.visible > 0'
29   end
30   
31   def self.by_author_list_includes
32     {
33       :scroll => {
34         :author => {}
35       }
36     }
37   end
38   
39   def self.show_opt
40     {:include => {
41       :author => {}, 
42       :scroll => {
43         :author => {}
44       }, 
45       :panel => {
46         :author => {}, 
47         :panel_pictures => {:picture => {:artist => {}, :license => {}}}, 
48         :speech_balloons =>{:balloon => {}, :speech => {}}
49       }
50     }}
51   end
52   
53   def self.licensed_pictures scroll_panels
54     Panel.licensed_pictures scroll_panels.select {|sp| sp.panel }.map {|sp| sp.panel }
55   end
56   
57   def allow? operators
58     return nil if self.scroll_id == nil or self.panel_id == nil
59     self.scroll.own?(operators) and self.panel.usable?(operators)
60   end
61   
62 end