OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / app / assets / javascripts / views / layout.js.coffee
1 class Pettanr.Views.Layout\r
2 class Pettanr.Views.Layout.Base extends Backbone.View\r
3   \r
4 class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base\r
5   className: 'layout-sns'\r
6   \r
7   initialize: (options) ->\r
8     @operators = new Pettanr.Operator({})\r
9     @global_router = new Pettanr.GlobalRouter({operators: @operators})\r
10     @listenTo(@global_router, 'go', @body_get)\r
11     @header = new Pettanr.Views.Layout.Sns.Header({parent: this})\r
12     @body = new Pettanr.Views.Layout.Sns.Body({parent: this})\r
13     @footer = new Pettanr.Views.Layout.Sns.Footer({parent: this})\r
14   \r
15   render: () ->\r
16     this.$el.html('')\r
17     this.$el.append(@header.render().el)\r
18     this.$el.append(@body.render().el)\r
19     this.$el.append(@footer.render().el)\r
20     this\r
21   \r
22   init_operators: (user) ->\r
23     author = new Pettanr.Author(user.get('author')) if user.get('author')\r
24     artist = new Pettanr.Artist(user.get('artist')) if user.get('artist')\r
25     @operators.init({\r
26       user: user, \r
27       author: author, \r
28       artist: artist\r
29     })\r
30     @global_router.operators = @operators\r
31   \r
32   reset_operators: () ->\r
33     @operators.init({\r
34       user: null, \r
35       author: null, \r
36       artist: null\r
37     })\r
38     @global_router.operators = @operators\r
39   \r
40   start: () ->\r
41     # check current user signed in?\r
42     proxy = new Pettanr.Proxy({operators: @operators})\r
43     @listenTo(proxy, 'redirect', @test_redirect)\r
44     # @listenTo(proxy, 'success', @test_ok)\r
45     @listenTo(proxy, 'fail', @test_ng)\r
46     @listenTo(proxy, 'sign_in', @sign_in)\r
47     proxy.http_post('users/test')\r
48   \r
49   test_ok: (user, response) ->\r
50     \r
51   \r
52   test_ng: (response) ->\r
53     @head_http_get('users/guest')\r
54     @body_http_get('user_sessions/new')\r
55   \r
56   test_redirect: (url) ->\r
57     proxy = @getter_proxy()\r
58     @stopListening(proxy, 'done')  # ignore global routing\r
59     proxy.http_get(url, null)\r
60   \r
61   sign_in: (user) ->\r
62     @init_operators(user)\r
63     @head_http_get('users/account')\r
64   \r
65   sign_out: () ->\r
66     @reset_operators()\r
67     @head_http_get('users/guest')\r
68   \r
69   head_http_get: (url) ->\r
70     proxy = new Pettanr.Proxy({operators: @operators})\r
71     @listenTo(proxy, 'ready', @head_ready)\r
72     proxy.http_get(url, null)\r
73   \r
74   head_ready: (view) ->\r
75     @listenTo(view, 'http_get', @body_http_get)\r
76     @listenTo(view, 'http_post', @body_http_post)\r
77     @header.refresh(view)\r
78   \r
79   getter_proxy: () ->\r
80     proxy = new Pettanr.Proxy({operators: @operators})\r
81     @listenTo(proxy, 'ready', @body_ready)\r
82     @listenTo(proxy, 'title', @body_title)\r
83     @listenTo(proxy, 'done', @body_done)\r
84     proxy\r
85   \r
86   body_http_get: (url, form) ->\r
87     @getter_proxy().http_get(url, form)\r
88   \r
89   body_get: (params, form) ->\r
90     @getter_proxy().get(params, form)\r
91   \r
92   body_ready: (view) ->\r
93     @listenTo(view, 'http_get', @body_http_get)\r
94     @listenTo(view, 'http_post', @body_http_post)\r
95     @body.refresh(view)\r
96   \r
97   body_done: (params) ->\r
98     url = Pettanr.params_to_url(params)\r
99     @global_router.navigate(url, {trigger: false})\r
100   \r
101   body_title: (params, str = null) ->\r
102     t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title')\r
103     site_caption = _.escape(Manifest.manifest().magic_numbers.profile.users.caption)\r
104     $(document).attr('title', t + ' - ' + site_caption)\r
105   \r
106   poster_proxy: () ->\r
107     proxy = new Pettanr.Proxy({operators: @operators})\r
108     @listenTo(proxy, 'success', @body_success)\r
109     @listenTo(proxy, 'fail', @body_fail)\r
110     @listenTo(proxy, 'redirect', @body_redirect)\r
111     @listenTo(proxy, 'sign_in', @sign_in)\r
112     @listenTo(proxy, 'sign_out', @sign_out)\r
113     proxy\r
114   \r
115   body_http_post: (url, form) ->\r
116     @poster_proxy().http_post(url, form)\r
117   \r
118   body_post: (params, form) ->\r
119     @poster_proxy().post(params, form)\r
120   \r
121   body_success: (url) ->\r
122     \r
123   \r
124   body_fail: (url) ->\r
125     \r
126   \r
127   body_redirect: (url) ->\r
128     @global_router.navigate(url)\r
129     @getter_proxy().http_get(url)\r
130   \r
131 class Pettanr.Views.Layout.Blog extends Pettanr.Views.Layout.Base\r
132   className: 'layout-blog'\r
133   \r
134   start: () ->\r
135     # initial page\r
136     @router.navigate('users/sign_in')\r
137     @header.navigate('users/guest')\r
138     @body.navigate('top/demo')\r
139   \r
140   sign_in_fail: (user, response) ->\r
141     view = new Pettanr.Views.UserSeeeion.New({\r
142       operators: @operators\r
143     })\r
144     view.render()\r
145     @body.navigate('top/demo')\r
146   \r
147   header_class: () ->\r
148     Pettanr.Views.Layout.Blog.Header\r
149   \r
150   body_class: () ->\r
151     Pettanr.Views.Layout.Blog.Body\r
152   \r
153   footer_class: () ->\r
154     Pettanr.Views.Layout.Blog.Footer\r
155   \r