OSDN Git Service

523c42a50165acb836d7e3f046083f98977919f9
[pettanr/pettanr.git] / lib / view / list / list.rb
1   class ListViewFactory
2     attr :item, :operators
3       @@types = {
4         'public' => PublicListView, 'private' => PrivateListView, 'system_resource' => SystemResourceList,
5         'filter' => FilterListView, 
6         'through_filter' => ThroughFilterList, 'element_filter' => ElementFilterList, 
7         'play' => PlayListView
8       }
9     def initialize item, operators, list_manifest
10       list_manifest.type
11       
12       
13       
14       @item = item
15       @operators = operators
16       @filer_manifest = filer_manifest
17       @symbol = SymbolView self, @filer_manifest.symbol.symbol_manifest
18     end
19     
20   class PublicListView
21       def where
22         @model.list_where
23       end
24       
25       def includes
26         if @owner_model
27           if @owner_model.owner_model
28             {@owner_model.item_name => {@owner_model.owner_model.item_name => {}}}
29           else
30             {@owner_model.item_name => {}}
31           end
32         else
33           {}
34         end
35       end
36       
37       def order
38         @model.list_order
39       end
40       
41   class PrivateListView
42       
43       def where 
44         case @model.owner_type
45         when :author
46           operator = @operators.author
47         when :artist
48           operator = @operators.artist
49         end
50         t = if @owner_model
51           if @owner_model.owner_model
52             @owner_model.owner_model.table_name
53           else
54             @owner_model.table_name
55           end
56         else
57           @table_name
58         end
59         [t + '.' + @model.owner_type.to_s + '_id = ?', operator.id]
60       end
61     
62   end
63