class Pettanr.View.Layout class Pettanr.View.Layout.Base extends Pettanr.View class Pettanr.View.Layout.Sns extends Pettanr.View.Layout.Base className: 'layout-sns' initialize: (options) -> @global_router = new Pettanr.GlobalRouter({}) @listenTo(@global_router, 'go', @body_get) @gate = new Pettanr.BeforeUnload() @header = new Pettanr.View.Layout.Sns.Header({parent: this}) @history = new Pettanr.Views.History({parent: this}) @listenTo(@history, 'http_get', @body_http_get) @listenTo(@history, 'get', @body_get) @body = new Pettanr.View.Layout.Sns.Body({parent: this}) @footer = new Pettanr.View.Layout.Sns.Footer({parent: this}) @error_dialog = new Editor.Error.Dialog({parent: this}) @listenTo(@error_dialog, 'open', @open_dialog) @listenTo(@error_dialog, 'close', @close_dialog) render: () -> this.$el.html('') this.$el.append(@header.render().el) this.$el.append(@history.render().el) @append_rb() this.$el.append(@body.render().el) this.$el.append(@footer.render().el) this.$el.append(@error_dialog.render().el) @error_dialog.$el.dialog({ autoOpen: false, resizable: false, width: 500, height: 600, modal: true, buttons: { close: () -> $(@).dialog('close') } }) this init_operators: (user) -> author = new Pettanr.Author(user.get('author')) if user.get('author') artist = new Pettanr.Artist(user.get('artist')) if user.get('artist') Pettanr.cache.operators.init({ user: user, author: author, artist: artist }) reset_operators: () -> Pettanr.cache.operators.init({ user: null, author: null, artist: null }) start: () -> # check current user signed in? proxy = new Pettanr.Proxy({}) @listenTo(proxy, 'redirect', @test_redirect) # @listenTo(proxy, 'success', @test_ok) @listenTo(proxy, 'fail', @test_ng) @listenTo(proxy, 'sign_in', @sign_in) proxy.http_post('users/test') test_ok: (user, response) -> @history.enable() test_ng: (response) -> @history.disable() # @head_http_get('users/guest') @body_http_get('user_sessions/new') test_redirect: (url) -> proxy = @getter_proxy() @stopListening(proxy, 'done') # ignore global routing @stopListening(proxy, 'title', @push_history) # ignore push_history proxy.http_get(url, null) sign_in: (user) -> @init_operators(user) @head_http_get('users/account') @history.enable() sign_out: () -> @reset_operators() @header.remove() #@head_http_get('user_sessions/end') @history.disable() window.location='/' head_http_get: (url) -> proxy = new Pettanr.Proxy({}) @listenTo(proxy, 'ready', @head_ready) proxy.http_get(url, null) head_ready: (view) -> @listenTo(view, 'http_get', @body_http_get) @listenTo(view, 'http_post', @body_http_post) @header.refresh(view) getter_proxy: () -> proxy = new Pettanr.Proxy({gate: @gate}) @listenTo(proxy, 'ready', @body_ready) @listenTo(proxy, 'fail', @body_fail) @listenTo(proxy, 'title', @body_title) @listenTo(proxy, 'title', @push_history) @listenTo(proxy, 'done', @body_done) @listenTo(proxy, 'deny', @body_deny) @listenTo(proxy, 'lock', @body_lock) @listenTo(proxy, 'unlock', @body_unlock) @listenTo(proxy, 'cancel', @cancel) proxy body_http_get: (url, form) -> @getter_proxy().http_get(url, form) body_get: (params, form) -> @getter_proxy().get(params, form) body_ready: (view) -> @listenTo(view, 'http_get', @body_http_get) @listenTo(view, 'http_post', @body_http_post) @body.refresh(view) body_fail: (response, options) -> @error_dialog.start(response, options) body_done: (params) -> url = Pettanr.params_to_url(params) @global_router.navigate(url, {trigger: false}) push_history: (params, str = null) -> @history.push(params, str) body_title: (params, str = null) -> t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title') site_caption = _.escape(Manifest.manifest().magic_numbers.profile.users.caption) $(document).attr('title', t + ' - ' + site_caption) poster_proxy: () -> proxy = new Pettanr.Proxy({}) @listenTo(proxy, 'success', @body_success) @listenTo(proxy, 'fail', @body_fail) @listenTo(proxy, 'redirect', @body_redirect) @listenTo(proxy, 'sign_in', @sign_in) @listenTo(proxy, 'sign_out', @sign_out) @listenTo(proxy, 'deny', @body_deny) @listenTo(proxy, 'unlock', @body_unlock) proxy body_http_post: (url, form) -> @poster_proxy().http_post(url, form) body_post: (params, form) -> @poster_proxy().post(params, form) body_success: (url) -> body_redirect: (url) -> @global_router.navigate(url) @getter_proxy().http_get(url) body_deny: (params, form, safe_url) -> @getter_proxy().http_get(safe_url, params, form) body_lock: (params, form) -> @gate.lock(params, form) body_unlock: (params, form) -> @gate.unlock() cancel: (params, form) -> open_dialog: () -> @trigger('dialog:open', dialog) close_dialog: () -> @trigger('dialog:close', @dialog) if @dialog.is_catch() # stored panel back to player @back() class Pettanr.View.Layout.Blog extends Pettanr.View.Layout.Base className: 'layout-blog' start: () -> # initial page @router.navigate('users/sign_in') @header.navigate('users/guest') @body.navigate('top/demo') sign_in_fail: (user, response) -> view = new Pettanr.Views.UserSeeeion.New({}) view.render() @body.navigate('top/demo') header_class: () -> Pettanr.Views.Layout.Blog.Header body_class: () -> Pettanr.Views.Layout.Blog.Body footer_class: () -> Pettanr.Views.Layout.Blog.Footer