OSDN Git Service

add app body
[pettanr/pettanr.git] / app / assets / javascripts / peta / item.js.coffee
1 class Peta.Item extends Backbone.Model\r
2   @child_models: () ->\r
3     @my_manifest().child_models()\r
4   \r
5   @child_element_names: () ->\r
6     @my_manifest().child_element_names()\r
7   \r
8   # ClassMethods\r
9   \r
10   @my_class: () ->\r
11     this\r
12   \r
13   my_class: () ->\r
14     @constructor\r
15   \r
16   @my_peta: () ->\r
17     return null if not Manifest.manifest().items\r
18     Manifest.manifest().items[@item_name()]\r
19   \r
20   @my_manifest: () ->\r
21     return null if not Manifest.manifest().models\r
22     Manifest.manifest().models[@item_name()]\r
23   \r
24   @singular: () ->\r
25     'Name'\r
26   \r
27   @plural: () ->\r
28     table_name = Manifest.manifest().pluralize @item_name()\r
29     Pettanr.camelize(table_name)\r
30   \r
31   @class_name: () ->\r
32     @singular()\r
33   \r
34   @model_name: () ->\r
35     @class_name()\r
36   \r
37   @item_name: () ->\r
38     Pettanr.underscore(@singular())\r
39   \r
40   @table_name: () ->\r
41     Pettanr.underscore(@plural())\r
42   \r
43   @is_item: () ->\r
44     true\r
45   \r
46   @is_content: () ->\r
47     false\r
48   \r
49   @is_element: () ->\r
50     false\r
51   \r
52   @is_root: () ->\r
53     false\r
54  \r
55   @parent_model: () ->\r
56     null\r
57   \r
58   @has_picture: () ->\r
59     false\r
60   \r
61   @path_name: (with_engine = false) ->\r
62     @table_name()\r
63   \r
64   @pickup_item_name: () ->\r
65     @item_name()\r
66   \r
67   @pickup_column_name: () ->\r
68     'id'\r
69   \r
70   @find_boost_name: (column_name) ->\r
71     @my_peta().find_boost_name column_name\r
72   \r
73   @is_extend_column: (column_name) -> \r
74     @my_peta().is_extend_column column_name\r
75   \r
76   @fold_extend_settings: (attr) ->\r
77     _.each my_peta().boost, (name, manifest) ->\r
78       my_settings = attr[manifest.settings_column_name]\r
79       if my_settings\r
80         attr[manifest.settings_column_name] = my_settings.to_json\r
81   \r
82   #InstanceMethods\r
83   \r
84   singular: () ->\r
85     @my_class().singular()\r
86   \r
87   plural: () ->\r
88     @my_class().plural()\r
89   \r
90   item_name: () ->\r
91     @my_class().item_name()\r
92   \r
93   model_name: () ->\r
94     @item_name()\r
95   \r
96   table_name: () ->\r
97     @my_class().table_name()\r
98   \r
99   path_name: (with_engine = false) ->\r
100     @my_class().path_name(with_engine)\r
101   \r
102   pickup_item_name: () ->\r
103     @my_class().pickup_item_name()\r
104   \r
105   pickup_column_name: () ->\r
106     @my_class().pickup_column_name()\r
107   \r
108   pickup_id: () ->\r
109     @get(pickup_column_name())\r
110   \r
111   form_template: (with_engine = false) ->\r
112     @path_name(with_engine) + '/form'\r
113   \r
114   form_name: () ->\r
115     if @extend_column()\r
116       @get(@extend_column())\r
117     else\r
118       @item_name()\r
119   \r
120   boosts: (level) ->\r
121     c = @my_class().my_peta().boost\r
122     _.each c, (boost_manifest, boost_name) =>\r
123       return if level == 'read' and boost_manifest.level == 'post'\r
124       @boost boost_manifest\r
125   \r
126   boost: (boost_manifest) ->\r
127     @boosters ||= {}\r
128     @boosters[boost_manifest.name] = new Locmare.Booster(boost_manifest, this)\r
129     # fetched item is not cleared .  force write booster\r
130     #@boosters[boost_manifest.name] ||= new Locmare.Booster(boost_manifest, this)\r
131   \r
132   boosters: () ->\r
133     @boosters ||= {}\r
134   \r
135   is_extend_column: (column_name) ->\r
136     @is_extend_column column_name\r
137   \r
138   is_visible: (operators) ->\r
139     if Manifest.manifest().magic_numbers['run_mode'] == 0\r
140       return false if not operators.is_guest()\r
141     else\r
142       return false if not operators.is_resource_reader()\r
143     true\r
144   \r
145   icon_view: (half) ->\r
146     new Pettanr.Views[@my_class().singular()].Icon({item: this, half: half})\r
147   \r
148   index_url: () ->\r
149     Pettanr.url(@table_name(), 'index', {id: @get('id')})\r
150   \r
151   show_url: () ->\r
152     Pettanr.url(@table_name(), 'show', {id: @get('id')})\r
153   \r
154   prof_url: () ->\r
155     Pettanr.url(@table_name(), 'show', {id: @get('id'), format: 'prof'})\r
156   \r
157   edit_url: () ->\r
158     Pettanr.url(@table_name(), 'edit', {id: @get('id')})\r
159   \r
160   destroy_url: () ->\r
161     Pettanr.url(@table_name(), 'destroy', {id: @get('id')})\r
162   \r
163   is_editize: () ->\r
164     @editor\r
165   \r
166   dom_id: () ->\r
167     (@get('id') || '').toString()\r
168   \r
169   dom_pool_type: () ->\r
170     @new_record ? 'stored' : 'new'\r
171   \r
172   merge_dom_item_id: (attr, name = null) ->\r
173     if @is_editize()\r
174       _.extend(attr, {'id': @dom_item_id(name)})\r
175     else\r
176       attr\r
177   \r
178   tag_attributes: (name = null, opt = {}) ->\r
179     r = {\r
180       'data-pool_type': @dom_pool_type(), 'data-id': @dom_id(), \r
181       'data-item_name': @item_name()\r
182     }\r
183     r = @merge_dom_item_id(r, name)\r
184     _.extend(r, opt)\r
185     r\r
186   \r
187   field_tag_attributes: (column_name, opt = {}) ->\r
188     r = @tag_attributes(column_name, opt)\r
189     _.extend(r, {'data-column_name': column_name})\r
190     r\r
191   \r
192   post_attribute_key: () ->\r
193     @dom_id\r
194   \r
195   @test: () ->\r
196     console.log(@child_models())\r
197     console.log(@child_element_names())\r
198     console.log(@my_peta())\r
199     console.log(@my_manifest())\r
200     console.log()\r
201     console.log()\r
202   \r
203   test: () ->\r
204     console.log(@my_class())\r
205     console.log(@item_name())\r
206     console.log(@model_name())\r
207     console.log(@table_name())\r
208     console.log(@path_name())\r
209     console.log(@pickup_item_name())\r
210     console.log(@pickup_column_name())\r
211     console.log(@dom_id())\r
212     console.log(@dom_pool_type())\r
213     console.log(@tag_attributes())\r
214     console.log(@field_tag_attributes('id'))\r
215     console.log(@post_attribute_key())\r