//= require_directory ./views/ground_colors
//= require_directory ./views/ground_pictures
//= require_directory ./views/home
+//= require_directory ./views/layouts
//= require_directory ./views/licenses
//= require_directory ./views/license_groups
//= require_directory ./views/original_pictures
loaded_local_manifest.init()\r
window.operators = new Pettanr.Operator({})\r
\r
- r = new Pettanr.Views.Top.Index({})\r
- $("#header").html(r.render().el)\r
- \r
window.onbeforeunload = (e)->\r
return('leave?')\r
- window.router = new Pettanr.Router()\r
Backbone.history.start({silent: true, pushState: true, root: '/'})\r
\r
- # try getting current user(copy paste from users/index)\r
- user = new Pettanr.User.Current()\r
- user.save({}, (current_user) ->\r
- r = new Pettanr.Views.Top.Account({operators: window.operators})\r
- $('#account').html(r.render().el)\r
- window.router.home()\r
- )\r
+ layout = new Pettanr.Views.Layout.Default()\r
+ $('#pettanr').html(layout.render().el)\r
\r
t: () ->\r
#i = new Pettanr.Balloon({id: 49})\r
artist: () ->\r
\r
initialize: () ->\r
+ _.extend(this, Backbone.Events)\r
if @id\r
@url = @url + @id\r
\r
class Pettanr.User.Current extends Pettanr.User\r
\r
- save: (model_attr, after_save = null) ->\r
+ save: (model_attr) ->\r
super(model_attr, {\r
success: (model, response, options) =>\r
- author = new Pettanr.Author(@get('author')) if @get('author')\r
- artist = new Pettanr.Artist(@get('artist')) if @get('artist')\r
- window.operators = new Pettanr.Operator({\r
- user: this, \r
- author: author, \r
- artist: artist\r
- })\r
- if after_save\r
- after_save(this)\r
+ @trigger('sign_in:success')\r
error: (model, response, options) ->\r
- r = new Pettanr.Views.User.Index({})\r
- $("#pettanr").html(r.render().el)\r
+ @trigger('sign_in:fail')\r
})\r
\r
initialize: () ->\r
form_edit: () ->\r
@set_edit()\r
\r
- class Pettanr.AppBody extends Backbone.View\r
- el: "#pettanr"\r
- \r
- initialize: (options) ->\r
- super(options)\r
- \r
- render: () ->\r
- this.$el.html('')\r
- this\r
- \r
- refresh: (body) ->\r
- @listenTo(body, 'navigate', @navigate)\r
- this.$el.html(body.el)\r
- \r
- fire: (params) ->\r
- c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
- controller = new c\r
- controller.params = params\r
- @listenTo(controller, 'ready', @refresh)\r
- @listenTo(controller, 'retitle', @retitle)\r
- controller[params['action']]()\r
- \r
- navigate: (url) ->\r
- window.router.navigate(url, true)\r
- \r
- retitle: (params, str = null) ->\r
- t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title')\r
- site_caption = _.escape(Manifest.manifest().magic_numbers.profile.users.caption)\r
- $(document).attr('title', t + ' - ' + site_caption)\r
- \r
class Pettanr.Dialog extends Backbone.View\r
\r
initialize: (options) ->\r
params\r
\r
initialize: () ->\r
+ _.extend(this, Backbone.Events)\r
_.each @peta_routes(), (r) =>\r
@route(r.route, r.callback)\r
- @body = new Pettanr.AppBody()\r
- \r
- fire: (params, dialog) ->\r
- b = dialog || @body\r
- b.fire(params)\r
\r
peta_routes: () ->\r
[\r
{route: 'users/sign_in', callback: 'user_sign_in'}, \r
]\r
\r
+ # render App(render:all)\r
home: () ->\r
params = @home_params()\r
- @fire(params)\r
+ @trigger('fire', params)\r
\r
home_params: () ->\r
params = {}\r
caption_url: caption_url,\r
prof_url: prof_url\r
})\r
+ @listenTo(this, 'ready', @ready)\r
+ @speech_balloon = @item.speech_balloon()\r
+ @speech_balloon.fetch({cache: true}).done =>\r
+ @panel = @speech_balloon.panel({with_elements: true})\r
+ @panel.fetch({cache: false}).done => # with elements\r
+ @author = new Pettanr.Views.Show.HeaderAuthor({item: @panel})\r
+ @body = new Pettanr.Views.Panel.Body({\r
+ panel: @panel,\r
+ operators: @operators,\r
+ spot: @item\r
+ })\r
+ @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
+ pictures: @panel.licensed_pictures()\r
+ })\r
+ @listenTo(@header, 'click:icon', @click_show)\r
+ @listenTo(@header, 'click:caption', @click_show)\r
+ @listenTo(@header, 'click:prof', @click_prof)\r
+ @listenTo(@author, 'click:author', @click_author)\r
+ @listenTo(@credits, 'click:credit:icon', @click_credit_icon)\r
+ @trigger('ready')\r
\r
render: () ->\r
this.$el.html('')\r
- this.$el.append(@header.render().el)\r
this\r
\r
+ ready: () ->\r
+ this.$el.html('')\r
+ this.$el.append(@header.render().el)\r
+ this.$el.append(@author.render().el)\r
+ this.$el.append(@body.render().el)\r
+ this.$el.append(@credits.render().el)\r
+ rb = new Tag.RowBreak()\r
+ this.$el.append(rb.render().el)\r
+ \r
+ click_show: () ->\r
+ window.router.navigate(@item.show_url(), true)\r
+ \r
+ click_author: () ->\r
+ window.router.navigate(@panel.author().show_url(), true)\r
+ \r
+ click_prof: () ->\r
+ window.router.navigate(@item.prof_url(), true)\r
+ \r
+ click_credit_icon: (item) ->\r
+ window.router.navigate(item.show_url(), true)\r
+ \r
--- /dev/null
+class Pettanr.Views.Layout\r
+class Pettanr.Views.Layout.Default extends Backbone.View\r
+ tagName: 'div'\r
+ \r
+ initialize: (options) ->\r
+ @operators = options.operators\r
+ @header = new Pettanr.Views.Layout.Default.Header()\r
+ @body = new Pettanr.Views.Layout.Default.Body()\r
+ @footer = new Pettanr.Views.Layout.Default.Footer()\r
+ @listenTo(@body, 'refresh', @refresh)\r
+ @listenTo(@body, 'refresh:top', @refresh_top)\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ this.$el.append(@header.render().el)\r
+ this.$el.append(@body.render().el)\r
+ this.$el.append(@footer.render().el)\r
+ this\r
+ \r
+class Pettanr.Views.Layout.Default.Header extends Backbone.View\r
+ tagName: 'div'\r
+ id: 'header'\r
+ \r
+ initialize: (options) ->\r
+ @operators = options.operators\r
+ @user = new Pettanr.User.Current()\r
+ @listenTo(@user, 'signin:success', @signin_success)\r
+ @listenTo(@user, 'signin:fail', @signin_fail)\r
+ # try getting current user\r
+ @user.save({})\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ this\r
+ \r
+ refresh: () ->\r
+ render_sign_in: () ->\r
+ view = new Pettanr.Views.Top.Account()\r
+ this.$el.html(@header.render().el)\r
+ \r
+ render_sign_in: () ->\r
+ view = new Pettanr.Views.Top.Index()\r
+ this.$el.html(@header.render().el)\r
+ \r
+ sign_in_success: () ->\r
+ author = new Pettanr.Author(@user.get('author')) if @user.get('author')\r
+ artist = new Pettanr.Artist(@user.get('artist')) if @user.get('artist')\r
+ window.operators = new Pettanr.Operator({\r
+ user: @user, \r
+ author: author, \r
+ artist: artist\r
+ })\r
+ @render_signin()\r
+ @trigger('sign_in:success')\r
+ @trigger('refresh:body', @view)\r
+ \r
+ sign_in_fail: () ->\r
+ @trigger('signin:fail')\r
+ \r
+ sign_out: () ->\r
+ \r
+ navigate: (url) ->\r
+ @trigger('navigate', url)\r
+ \r
+class Pettanr.Views.Layout.Default.Body extends Backbone.View\r
+ tagName: 'div'\r
+ id: 'body'\r
+ \r
+ initialize: (options) ->\r
+ @router = new Pettanr.Router()\r
+ @listenTo(@router, 'fire', @fire)\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ view = new Pettanr.Views.Top.Account()\r
+ this\r
+ \r
+ fire: (params) ->\r
+ c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
+ controller = new c\r
+ controller.params = params\r
+ @listenTo(controller, 'ready', @refresh)\r
+ @listenTo(controller, 'retitle', @retitle)\r
+ controller[params['action']]()\r
+ \r
+ retitle: (params, str = null) ->\r
+ t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title')\r
+ site_caption = _.escape(Manifest.manifest().magic_numbers.profile.users.caption)\r
+ $(document).attr('title', t + ' - ' + site_caption)\r
+ \r
+ refresh: (view) ->\r
+ @listenTo(view, 'navigate', @navigate)\r
+ this.$el.html(view.el)\r
+ \r
+ navigate: (url) ->\r
+ @router.navigate(url)\r
+ \r
+class Pettanr.Views.Layout.Default.Footer extends Backbone.View\r
+ tagName: 'div'\r
+ id: 'footer'\r
+ \r
+ initialize: (options) ->\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ this\r
+ \r
caption_url: caption_url,\r
prof_url: prof_url\r
})\r
+ @listenTo(this, 'ready', @ready)\r
+ @speech_balloon = @item.speech_balloon()\r
+ @speech_balloon.fetch({cache: true}).done =>\r
+ @panel = @speech_balloon.panel({with_elements: true})\r
+ @panel.fetch({cache: false}).done => # with elements\r
+ @author = new Pettanr.Views.Show.HeaderAuthor({item: @panel})\r
+ @body = new Pettanr.Views.Panel.Body({\r
+ panel: @panel,\r
+ operators: @operators,\r
+ spot: @item\r
+ })\r
+ @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
+ pictures: @panel.licensed_pictures()\r
+ })\r
+ @listenTo(@header, 'click:icon', @click_show)\r
+ @listenTo(@header, 'click:caption', @click_show)\r
+ @listenTo(@header, 'click:prof', @click_prof)\r
+ @listenTo(@author, 'click:author', @click_author)\r
+ @listenTo(@credits, 'click:credit:icon', @click_credit_icon)\r
+ @trigger('ready')\r
\r
render: () ->\r
this.$el.html('')\r
- this.$el.append(@header.render().el)\r
this\r
\r
+ ready: () ->\r
+ this.$el.html('')\r
+ this.$el.append(@header.render().el)\r
+ this.$el.append(@author.render().el)\r
+ this.$el.append(@body.render().el)\r
+ this.$el.append(@credits.render().el)\r
+ rb = new Tag.RowBreak()\r
+ this.$el.append(rb.render().el)\r
+ \r
+ click_show: () ->\r
+ window.router.navigate(@item.show_url(), true)\r
+ \r
+ click_author: () ->\r
+ window.router.navigate(@panel.author().show_url(), true)\r
+ \r
+ click_prof: () ->\r
+ window.router.navigate(@item.prof_url(), true)\r
+ \r
+ click_credit_icon: (item) ->\r
+ window.router.navigate(item.show_url(), true)\r
+ \r
if @artist_view\r
this.$el.append(@artist_view.render().el)\r
sign_out = new Tag.A({\r
- attr: {href: '/'}, \r
+ attr: {href: '/users/sign_out'}, \r
class_name: 'sign_out', \r
content: 'sign out'\r
})\r
this\r
\r
author_click: () ->\r
- window.router.navigate(@author_view.url(), true)\r
+ @trigger('navigate', @author_view.url())\r
\r
artist_click: () ->\r
- window.router.navigate(@artist_view.url(), true)\r
+ @trigger('navigate', @artist_view.url())\r
\r
sign_out: () ->\r
user = new Backbone.Model({id: 0})\r
</head>\r
<body>\r
\r
-<div id="header">\r
-</div>\r
-<div id="body">\r
<div id="pettanr">\r
</div>\r
-</div>\r
-<div id="footer">\r
-</div>\r
<script type="text/template" id="header_template">\r
<span id="logo">\r
<a class="logo" href="/"><&= title &></a>\r