OSDN Git Service

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