OSDN Git Service

merge:
[pettanr/pettanr.git] / app / assets / javascripts / views / show.js.coffee
1 class Pettanr.Views.Show\r
2 class Pettanr.Views.Show.Header extends Backbone.View\r
3   tagName: 'h1'\r
4   className: 'show-header'\r
5   \r
6   initialize: (options) ->\r
7     @item = options.item\r
8     @operators = options.operators\r
9     @title = options.caption\r
10     @icon_url = options.icon_url\r
11     @caption_url = options.caption_url\r
12     @prof_url = options.prof_url\r
13     \r
14     @pick = null\r
15     @icon = new Pettanr.Image.Icon({item: @item, half: true})\r
16     @icon_button = new Tag.A({\r
17       attr: {href: '/' + @icon_url}, \r
18       class_name: 'icon',\r
19       content: @icon.render().el\r
20     })\r
21     @caption = new Tag.A({\r
22       attr: {href: '/' + @caption_url},\r
23       class_name: 'caption',\r
24       content: _.escape(@title)\r
25     })\r
26     @prof = new Pettanr.Image.SymbolImg({attr: {src: '/images/prof.gif'}, half: true})\r
27     @prof_button = new Tag.A({\r
28       attr: {href: '/' + @prof_url}, \r
29       class_name: 'prof',\r
30       content: @prof.render().el\r
31     })\r
32     @listenTo(@icon, 'click', @click_icon)\r
33     @listenTo(@caption, 'click', @click_caption)\r
34     @listenTo(@prof_button, 'click', @click_prof)\r
35   \r
36   render: () ->\r
37     this.$el.html('')\r
38     this.$el.append(@pick.render().el) if @pick\r
39     this.$el.append(@icon_button.render().el)\r
40     this.$el.append(@caption.render().el)\r
41     this.$el.append(@prof_button.render().el)\r
42     this\r
43   \r
44   click_pick: () ->\r
45     @trigger('click:pick')\r
46   \r
47   click_icon: () ->\r
48     @trigger('click:icon')\r
49   \r
50   click_caption: () ->\r
51     @trigger('click:caption')\r
52   \r
53   click_prof: () ->\r
54     @trigger('click:prof')\r
55   \r
56   add_pick: (target_model) ->\r
57     @pick = new Pettanr.Views.Common.PickIcon({\r
58       name: target_model.pick_type(@item.item_name()), half: true\r
59     })\r
60     @listenTo(@pick, 'click', @click_pick)\r
61     @render()\r
62   \r
63 class Pettanr.Views.Show.HeaderAuthor extends Backbone.View\r
64   tagName: 'div'\r
65   \r
66   initialize: (options) ->\r
67     @item = options.item\r
68     retriever = @item.author()\r
69     @listenTo(retriever, 'retrieve', @retrieve_author)\r
70     retriever.retrieve()\r
71     \r
72   retrieve_author: (@author) ->\r
73     name = @author.escape('name')\r
74     author_url = @author.show_url()\r
75     @linked_author =  new Tag.A({\r
76       attr: {href: '/' + author_url}, \r
77       content: name\r
78     })\r
79     @listenTo(@linked_author, 'click', @click)\r
80     @render()\r
81   \r
82   render: () ->\r
83     this.$el.html('')\r
84     this.$el.append(Pettanr.AppHelper.t_a(@item.item_name(), 'author_id'))\r
85     this.$el.append(@linked_author.render().el) if @linked_author\r
86     this\r
87   \r
88   click: () ->\r
89     @trigger('click:author')\r
90   \r
91 class Pettanr.Views.Show.LinkedEditButton extends Tag.A\r
92   \r
93   initialize: (options) ->\r
94     item = options.item\r
95     super({\r
96       attr: {href: '/' + item.edit_url()}, \r
97       content: I18n.t('link.edit')\r
98     })\r
99   \r
100   url: () ->\r
101     @url\r
102   \r
103 class Pettanr.Views.Show.LinkedDestroyButton extends Tag.A\r
104   \r
105   initialize: (options) ->\r
106     item = options.item\r
107     super({\r
108       attr: {href: '/' + item.destroy_url()}, \r
109       content: I18n.t('link.destroy')\r
110     })\r
111   \r
112   url: () ->\r
113     @destroy_url\r
114   \r
115 class Pettanr.Views.Show.OwnerFooter extends Backbone.View\r
116   tagName: 'div'\r
117   className: 'show-owner-footer'\r
118   \r
119   initialize: (options) ->\r
120     super(options)\r
121     @item = options.item\r
122     @operators = options.operators\r
123     @edit = new Pettanr.Views.Show.LinkedEditButton({item: @item})\r
124     @destroy = new Pettanr.Views.Show.LinkedDestroyButton({item: @item})\r
125     @listenTo(@edit, 'click', @click_edit)\r
126     @listenTo(@destroy, 'click', @click_destroy)\r
127   \r
128   render: () ->\r
129     this.$el.html('')\r
130     this.$el.append(@edit.render().el)\r
131     this.$el.append(@destroy.render().el)\r
132     this\r
133   \r
134   click_edit: () ->\r
135     @trigger('click:edit')\r
136   \r
137   click_destroy: () ->\r
138     @trigger('click:destroy')\r
139   \r
140 class Pettanr.Views.Show.Owner extends Backbone.View\r
141   tagName: 'div'\r
142   \r
143   initialize: (options) ->\r
144     super(options)\r
145     @item = options.item\r
146     @operators = options.operators\r
147     @header = new Tag.H3({\r
148       class_name: 'owner-header',\r
149       content: I18n.t('editor')\r
150     })\r
151     @footer = new Pettanr.Views.Show.OwnerFooter({item: @item, operators: @operators})\r
152     @listenTo(@footer, 'click:edit', @click_edit)\r
153     @listenTo(@footer, 'click:destroy', @click_destroy)\r
154   \r
155   render: () ->\r
156     this.$el.html('')\r
157     this.$el.append(@header.render().el)\r
158     this.$el.append(@footer.render().el)\r
159     this\r
160   \r
161   click_edit: () ->\r
162     @trigger('click:footer:edit')\r
163     @trigger('click:edit')\r
164   \r
165   click_destroy: () ->\r
166     @trigger('click:footer:destroy')\r
167     @trigger('click:destroy')\r
168   \r