OSDN Git Service

fix picture io:
[pettanr/pettanr.git] / lib / peta / content.rb
1 module Peta
2   class Content < Item
3     self.abstract_class = true
4     
5     # Dynamic Methods
6     
7     def self.load_manifest
8       super
9       return nil if self._skip_load?
10       # Class Methods
11       ct = self.my_manifest.content_model?
12       define_singleton_method("content?") do 
13         ct
14       end
15       ot = self.my_manifest.owner_type
16       define_singleton_method("owner_type") do 
17         ot
18       end
19       om = self.parent_model
20       define_singleton_method("owner_model") do 
21         om
22       end
23       oc = self.owner_type.to_s + '_id'
24       define_singleton_method("owner_column") do 
25         oc
26       end
27       # Instance Methods
28     end
29     
30     # Class Methods
31     
32     def self.operator operators
33       return nil unless self.owner_type
34       operators.__send__ self.owner_type
35     end
36     
37     def self.public_list_where list
38       nil
39     end
40     
41     def self.edit content_id, operators
42       content = self.find content_id
43       raise ActiveRecord::Forbidden unless content.own?(operators)
44       content
45     end
46     
47     # Instance Methods
48     
49     def owner_model
50       self.class.owner_model ? self.__send__(self.class.owner_model.item_name) : self
51     end
52     
53     # super return if my item
54     def visible? operators
55       super
56       return nil if owner_model.own?(operators)
57       true
58     end
59     
60     def own? operators
61       operator = self.class.operator operators
62       return false unless operator
63       owner_model.attributes[self.class.owner_column] == operator.id
64     end
65     
66   end
67 end
68