1 class Pettanr.ViewPicker extends Backbone.View
\r
2 initialize: (options) ->
\r
3 @operators = options.operators
\r
4 _.extend(this, Backbone.Events)
\r
5 _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype)
\r
6 @local_router = new Pettanr.LocalRouter()
\r
7 @listenTo(@local_router, 'fire', @fire)
\r
10 @local_router.navigate(url, true)
\r
13 controller = Pettanr.AppController.new2(params, @operators)
\r
14 @add_listener(controller, this)
\r
15 action_name = params['action']
\r
16 controller[action_name]()
\r
18 retitle: (params, str = null) ->
\r
19 @trigger('retitle', params, str = null)
\r
22 @trigger('ready', view)
\r
24 class Pettanr.Views.Layout
\r
25 class Pettanr.Views.Layout.ControllerManager
\r
27 add_listener: (controller, self) ->
\r
28 self.listenTo(controller, 'ready', self.refresh)
\r
29 self.listenTo(controller, 'retitle', self.retitle)
\r
30 self.listenTo(controller, 'sign_in:success', self.sign_in_success)
\r
31 self.listenTo(controller, 'sign_in:fail', self.sign_in_fail)
\r
32 self.listenTo(controller, 'sign_out:success', self.sign_out_success)
\r
33 self.listenTo(controller, 'sign_out:fail', self.sign_out_fail)
\r
34 self.listenTo(controller, 'block', self.block)
\r
35 self.listenTo(controller, 'redirect', self.redirect_to)
\r
37 class Pettanr.Views.Layout.Base extends Backbone.View
\r
39 className: 'layout-base'
\r
41 initialize: (options) ->
\r
42 _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype)
\r
43 @operators = new Pettanr.Operator({})
\r
44 # router for refresh body
\r
45 @global_router = new Pettanr.GlobalRouter()
\r
46 # router for refresh body. but not replace url
\r
47 @local_router = new Pettanr.LocalRouter()
\r
48 # router for refresh header
\r
49 @header_router = new Pettanr.LocalRouter()
\r
50 @listenTo(@global_router, 'fire', @fire_for_body)
\r
51 @listenTo(@local_router, 'fire', @fire_for_body)
\r
52 @listenTo(@header_router, 'fire', @fire_for_header)
\r
53 @header = new (@header_class())({parent: this})
\r
54 @body = new (@body_class())({parent: this})
\r
55 @footer = new (@footer_class())({parent: this})
\r
59 this.$el.append(@header.render().el)
\r
60 this.$el.append(@body.render().el)
\r
61 this.$el.append(@footer.render().el)
\r
65 controller = Pettanr.AppController.new2(params, @operators)
\r
66 @add_listener(controller, this)
\r
67 action_name = params['action']
\r
68 controller[action_name]()
\r
71 # check current user signed in?
\r
72 # callback sign_in_success from users controller if signed in
\r
73 @local_router.navigate('users/test')
\r
75 fire_for_header: (params) ->
\r
76 @fire(params, @refresh_header)
\r
78 fire_for_body: (params) ->
\r
81 init_operators: (user) ->
\r
82 author = new Pettanr.Author(user.get('author')) if user.get('author')
\r
83 artist = new Pettanr.Artist(user.get('artist')) if user.get('artist')
\r
93 sign_in_success: (user, response) ->
\r
94 @init_operators(user)
\r
96 sign_in_fail: (user, response) ->
\r
99 reset_operators: () ->
\r
109 sign_out_success: (user, response) ->
\r
112 sign_out_fail: (user, response) ->
\r
115 retitle: (params, str = null) ->
\r
116 t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title')
\r
117 site_caption = _.escape(Manifest.manifest().magic_numbers.profile.users.caption)
\r
118 $(document).attr('title', t + ' - ' + site_caption)
\r
120 refresh_header: (view) ->
\r
121 @header.refresh(view)
\r
123 refresh_body: (view) ->
\r
124 @body.refresh(view)
\r
127 @body.refresh(view)
\r
132 redirect_to: (url, return_params, refresh_function) ->
\r
133 redirect_params = Pettanr.LocalRouter.url_to_params(redirect_url)
\r
134 @fire(redirect_params, refresh_function)
\r
136 header_class: () ->
\r
142 footer_class: () ->
\r
145 class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base
\r
146 className: 'layout-sns'
\r
148 initialize: (options) ->
\r
150 @listenTo(@header, 'navigate', @header_navigate)
\r
151 @listenTo(@header, 'sign_in', @sign_in)
\r
152 @listenTo(@header, 'sign_out', @sign_out)
\r
153 @listenTo(@header, 'sign_in:success', @sign_in_success)
\r
154 @listenTo(@header, 'sign_in:fail', @sign_in_fail)
\r
155 @listenTo(@header, 'sign_out:success', @sign_out_success)
\r
156 @listenTo(@header, 'sign_out:fail', @sign_out_fail)
\r
157 @listenTo(@body, 'navigate', @body_navigate)
\r
158 @listenTo(@body, 'sign_in', @sign_in)
\r
159 @listenTo(@body, 'sign_out', @sign_out)
\r
166 @user = new Pettanr.User.Session(attr)
\r
167 @listenTo(@user, 'sign_in:success', @sign_in_success)
\r
168 @listenTo(@user, 'sign_in:fail', @sign_in_fail)
\r
171 sign_in_success: (user, response) ->
\r
172 super(user, response)
\r
173 # navigate users/account
\r
174 # callback from fire to refresh_header
\r
175 @header.fire({controller: 'users', action: 'account'})
\r
177 # callback from fire to refresh_body
\r
178 @body.fire({controller: 'folders', action: 'root'})
\r
180 sign_in_fail: (user, response) ->
\r
181 super(user, response)
\r
182 @header.fire({controller: 'users', action: 'guest'})
\r
183 @body.fire({controller: 'user_sessions', action: 'new'})
\r
186 @header.fire({controller: 'users', action: 'sign_out'})
\r
188 sign_out_success: (user, response) ->
\r
189 super(user, response)
\r
190 @global_router.navigate('')
\r
191 ## navigate users/guest
\r
192 ## callback from fire to refresh_header
\r
193 @header.fire({controller: 'users', action: 'guest'})
\r
194 ## navigate sign in form
\r
195 ## callback from fire to refresh_body
\r
196 @body.fire({controller: 'user_sessions', action: 'new'})
\r
198 sign_out_fail: (user, response) ->
\r
199 super(user, response)
\r
203 @header_router.navigate('users/guest')
\r
204 @local_router.navigate('user_seeeions/new')
\r
206 header_navigate: (url) ->
\r
207 @global_router.navigate(url, true)
\r
209 body_navigate: (url) ->
\r
210 @global_router.navigate(url, {trigger: false})
\r
212 header_class: () ->
\r
213 Pettanr.Views.Layout.Sns.Header
\r
216 Pettanr.Views.Layout.Sns.Body
\r
218 footer_class: () ->
\r
219 Pettanr.Views.Layout.Sns.Footer
\r
221 class Pettanr.Views.Layout.Blog extends Pettanr.Views.Layout.Base
\r
222 className: 'layout-blog'
\r
226 @router.navigate('users/sign_in')
\r
227 @header.navigate('users/guest')
\r
228 @body.navigate('top/demo')
\r
230 sign_in_fail: (user, response) ->
\r
231 view = new Pettanr.Views.UserSeeeion.New({
\r
232 operators: @operators
\r
235 @body.navigate('top/demo')
\r
237 header_class: () ->
\r
238 Pettanr.Views.Layout.Blog.Header
\r
241 Pettanr.Views.Layout.Blog.Body
\r
243 footer_class: () ->
\r
244 Pettanr.Views.Layout.Blog.Footer
\r