# Backbone.Model has defaults property\r
#@item.supply_default()\r
\r
- set_edit: () ->\r
+ set_edit: (save_func) ->\r
@set_model()\r
@item = new @my_model_class({id: @params['id']})\r
@item.fetch({cache: true}).done =>\r
@item.boosts 'post'\r
- @render_form()\r
+ @render_form(save_func)\r
\r
- render_form: () ->\r
+ render_form: (save_func) ->\r
@form = Locmare.Form.factory({\r
form_name: @item.item_name(), \r
item: @item, \r
mounted: true, \r
submit: 'default', \r
operators: @operators,\r
- action: '/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id'))\r
+ action: '/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')),\r
+ save_func: save_func\r
})\r
+ @listenTo(@form, 'post', @create)\r
+ @listenTo(@form, 'put', @update)\r
@form.render()\r
@trigger('ready', @form)\r
\r
- form_new: () ->\r
+ form_new: (save_func) ->\r
@set_new()\r
- @render_form()\r
+ @render_form(save_func)\r
\r
- form_edit: () ->\r
- @set_edit()\r
+ form_edit: (save_func) ->\r
+ @set_edit(save_func)\r
\r
navigate: (url) ->\r
@trigger('navigate', url)\r
@item = new Pettanr.FolderWatch({id: @params['id']})\r
@item.fetch({cache: true}).done () =>\r
if @item.is_remote()\r
- vp = new Pettanr.ViewPicker({url: @item.remote_url(), operators: @operators})\r
+ vp = new Pettanr.ViewPicker({operators: @operators})\r
@listenTo(vp, 'ready', @refresh)\r
@listenTo(vp, 'retitle', @retitle)\r
+ vp.navigate(@item.remote_url())\r
else\r
@children_html()\r
\r
edit: () ->\r
@trigger('retitle', @params)\r
@set_model()\r
- @item = new Pettanr.Panel({id: @params['id']}, {with_elements: true})\r
+ panel = new Pettanr.Panel({id: @params['id']})\r
+ @item = panel.with_elements()\r
@item.fetch({cache: false}).done =>\r
editor = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
editor.render()\r
\r
new: () ->\r
@trigger('retitle', @params)\r
- @form_new()\r
+ @form_new(@create)\r
\r
edit: () ->\r
@trigger('retitle', @params)\r
- @form_edit()\r
+ @form_edit(@update)\r
\r
- create: () ->\r
+ create: (form) ->\r
+ form.item.overwrite(@operators)\r
+ if form.save()\r
+ vp = new Pettanr.ViewPicker({operators: @operators})\r
+ @listenTo(vp, 'ready', @redirected)\r
+ @listenTo(vp, 'retitle', @retitle)\r
+ vp.navigate(form.item.show_url())\r
+ else\r
+ @not_created()\r
\r
- update: () ->\r
+ update: (form) ->\r
+ form.item.overwrite(@operators)\r
+ if form.save()\r
+ vp = new Pettanr.ViewPicker({operators: @operators})\r
+ @listenTo(vp, 'ready', @redirected)\r
+ @listenTo(vp, 'retitle', @retitle)\r
+ vp.navigate(form.item.show_url())\r
+ else\r
+ @not_updated()\r
\r
destroy: () ->\r
- \r
+ @set_model()\r
+ @item = @my_model_class.edit(params['id'], @operators)\r
+ @render_destroy('/home/' + @item.path_name())\r
+ \r
+ redirected: (view) ->\r
+ @trigger('ready', view)\r
+ \r
\r
render: () ->\r
this.$el.html('')\r
- this.$el.append(@dialog.render().el)\r
- @dialog.$el.dialog({\r
- autoOpen: false,\r
- width: 640, height: 560\r
- })\r
+ # this.$el.append(@dialog.render().el)\r
+ #@dialog.$el.dialog({autoOpen: false, width: 640, height: 560 })\r
this.$el.append(@body.render().el)\r
this.$el.append(@dock.render().el)\r
@dock.element_bay.add_new_tab()\r
this.$el.append(@credits.render().el)\r
rb = new Tag.RowBreak()\r
this.$el.append(rb.render().el)\r
- this.$el.tabs()\r
+ @dock.$el.tabs()\r
window.editor = this # enable leave cancel flag on unsave\r
this\r
\r
super(options)\r
@submit = options.submit\r
@action = options.action\r
+ @save_func = options.save_func\r
@child_forms = {}\r
@item.boosts 'post'\r
@init_fields()\r
post: () ->\r
_.each @fields, (field) =>\r
@item.set(field.field_name, field.val())\r
- if @item.save()\r
- # redirect_to show\r
- @trigger('navigate', @item.show_url())\r
- return false\r
- else\r
- # render_form\r
- alert('invalid')\r
+ @trigger('post', this)\r
+ return false\r
\r
put: () ->\r
_.each @fields, (field) =>\r
@item.set(field.field_name, field.val())\r
- @item.overwrite({operators: @operators})\r
- if @save()\r
- @valid()\r
- else\r
- @invalid()\r
+ @trigger('put', this)\r
+ return false\r
\r
save: (attrs = null, options = null) ->\r
if attrs\r
class Pettanr.ViewPicker extends Backbone.View\r
initialize: (options) ->\r
- @url = options.url\r
@operators = options.operators\r
_.extend(this, Backbone.Events)\r
_.extend(this, Pettanr.Views.Layout.ControllerManager.prototype)\r
@local_router = new Pettanr.LocalRouter()\r
@listenTo(@local_router, 'fire', @fire)\r
- @local_router.navigate(@url, true)\r
+ \r
+ navigate: (url) ->\r
+ @local_router.navigate(url, true)\r
\r
fire: (params) ->\r
controller = Pettanr.AppController.new2(params, @operators)\r
artist: artist\r
})\r
\r
+ sign_in: () ->\r
+ false\r
+ \r
sign_in_success: (user, response) ->\r
@init_operators(user)\r
\r
artist: null\r
})\r
\r
+ sign_out: () ->\r
+ false\r
+ \r
sign_out_success: (user, response) ->\r
@reset_operators()\r
\r
initialize: (options) ->\r
super(options)\r
@listenTo(@header, 'navigate', @header_navigate)\r
+ @listenTo(@header, 'sign_in', @sign_in)\r
@listenTo(@header, 'sign_out', @sign_out)\r
+ @listenTo(@header, 'sign_in:success', @sign_in_success)\r
+ @listenTo(@header, 'sign_in:fail', @sign_in_fail)\r
+ @listenTo(@header, 'sign_out:success', @sign_out_success)\r
+ @listenTo(@header, 'sign_out:fail', @sign_out_fail)\r
@listenTo(@body, 'navigate', @body_navigate)\r
+ @listenTo(@body, 'sign_in', @sign_in)\r
+ @listenTo(@body, 'sign_out', @sign_out)\r
\r
start: () ->\r
# initial page\r
super()\r
\r
+ sign_in: () ->\r
+ \r
+ \r
sign_in_success: (user, response) ->\r
super(user, response)\r
# navigate users/account\r
@header_router.navigate('users/guest')\r
@local_router.navigate('user_seeeions/new')\r
\r
+ sign_out: () ->\r
+ @header.fire({controller: 'users', action: 'sign_out'})\r
+ \r
sign_out_success: (user, response) ->\r
super(user, response)\r
@global_router.navigate('')\r
action_name = params['action']\r
controller[action_name]()\r
\r
+ sign_in: () ->\r
+ @trigger('sign_in')\r
+ \r
sign_in_success: (user, response) ->\r
@trigger('sign_in:success', user, response)\r
\r
sign_in_fail: (user, response) ->\r
@trigger('sign_in:fail', user, response)\r
\r
+ sign_out: () ->\r
+ @trigger('sign_out')\r
+ \r
sign_out_success: (user, response) ->\r
@trigger('sign_out:success', user, response)\r
\r
\r
refresh: (view) ->\r
@listenTo(view, 'navigate', @navigate)\r
+ @listenTo(view, 'sign_in', @sign_in)\r
+ @listenTo(view, 'sign_out', @sign_out)\r
this.$el.html(view.render().el)\r
\r
- sign_out: () ->\r
- @trigger('sign_out')\r
- \r
navigate: (url) ->\r
# header's message replace body\r
# @local_router.navigate(url, true)\r
action_name = params['action']\r
controller[action_name]()\r
\r
+ sign_in: () ->\r
+ @trigger('sign_in')\r
+ \r
sign_in_success: (user, response) ->\r
@trigger('sign_in:success', user, response)\r
\r
sign_in_fail: (user, response) ->\r
@trigger('sign_in:fail', user, response)\r
\r
+ sign_out: () ->\r
+ @trigger('sign_out')\r
+ \r
sign_out_success: (user, response) ->\r
@trigger('sign_out:success', user, response)\r
\r
\r
refresh: (view) ->\r
@listenTo(view, 'navigate', @navigate)\r
+ @listenTo(view, 'post', @post)\r
+ @listenTo(view, 'put', @put)\r
this.$el.html(view.render().el)\r
\r
navigate: (url) ->\r
initialize: (options) ->\r
super(options)\r
\r
- post: () ->\r
- \r
- put: () ->\r
- @trigger('put')\r
- false\r
- \r
@operators = options.operators\r
@author = @operators.author\r
@artist = @operators.artist\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
@logo = new Pettanr.Views.Common.Logo({})\r
@listenTo(@logo, 'click', @logo_click)\r
+ this.$el.append(@logo.render().el)\r
if @author\r
@author_view = @author.icon_with_caption_view()\r
@listenTo(@author_view, 'click', @author_click)\r
+ this.$el.append(@author_view.render().el)\r
if @artist\r
@artist_view = @artist.icon_with_caption_view()\r
@listenTo(@artist_view, 'click', @artist_click)\r
- \r
- render: () ->\r
- this.$el.html('')\r
- this.$el.append(@logo.render().el)\r
- if @author_view\r
- this.$el.append(@author_view.render().el)\r
- if @artist_view\r
this.$el.append(@artist_view.render().el)\r
sign_out = new Tag.A({\r
attr: {href: '/users/sign_out'}, \r
class_name: 'sign_out', \r
content: 'sign out'\r
})\r
- @listenTo(sign_out, 'click', @sign_out)\r
+ @listenTo(sign_out, 'click', @sign_out_click)\r
this.$el.append(sign_out.render().el)\r
this\r
\r
artist_click: () ->\r
@trigger('navigate', @artist_view.url())\r
\r
- sign_out: () ->\r
- @trigger('navigate', 'users/sign_out')\r
+ sign_out_click: () ->\r
+ @trigger('sign_out')\r
return false\r
\r
tagName: 'div'\r
className: 'account'\r
\r
- tagName: 'div'\r
- \r
initialize: (options) ->\r
- @logo = new Pettanr.Views.Common.Logo({})\r
- @listenTo(@logo, 'click', @logo_click)\r
\r
render: () ->\r
this.$el.html('')\r
+ @logo = new Pettanr.Views.Common.Logo({})\r
+ @listenTo(@logo, 'click', @logo_click)\r
this.$el.append(@logo.render().el)\r
sign_in = new Tag.A({\r
attr: {href: '/users/sign_in'}, \r
class_name: 'sign_in', \r
- content: 'signin'\r
+ content: 'sign in'\r
})\r
+ @listenTo(sign_in, 'click', @sign_out_click)\r
this.$el.append(sign_in.render().el)\r
- @delegateEvents({'click .sign_in': 'sign_in'})\r
this\r
\r
logo_click: () ->\r
@trigger('navigate', '')\r
+ return false\r
\r
- click_sign_in: () ->\r
+ sign_in_click: () ->\r
@trigger('navigate', 'user_sessions/new')\r
return false\r
\r
},\r
row_break: true,\r
},\r
+ visible: {\r
+ tag: {\r
+ type: 'select',\r
+ },\r
+ row_break: true,\r
+ },\r
description: {\r
label: {\r
args: {\r
tag: {\r
type: 'text_area',\r
},\r
- },\r
- visible: {\r
- tag: {\r
- type: 'select',\r
- },\r
row_break: true,\r
},\r
id: {\r
},\r
field_names: [\r
'title',\r
- 'description',\r
'visible',\r
+ 'description',\r
'id',\r
'author_id',\r
]\r
},\r
row_break: true,\r
},\r
+ visible: {\r
+ tag: {\r
+ type: 'select',\r
+ },\r
+ row_break: true,\r
+ },\r
description: {\r
label: {\r
args: {\r
tag: {\r
type: 'text_area',\r
},\r
- },\r
- visible: {\r
- tag: {\r
- type: 'select',\r
- },\r
row_break: true,\r
},\r
id: {\r
},\r
field_names: [\r
'title',\r
- 'description',\r
'visible',\r
+ 'description',\r
'id',\r
'author_id',\r
]\r
},\r
row_break: true,\r
},\r
+ visible: {\r
+ tag: {\r
+ type: 'select',\r
+ },\r
+ row_break: true,\r
+ },\r
description: {\r
label: {\r
args: {\r
},\r
row_break: true,\r
},\r
- visible: {\r
- tag: {\r
- type: 'select',\r
- },\r
- row_break: true,\r
- },\r
id: {\r
label: {\r
type: 'none',\r
},\r
field_names: [\r
'title',\r
- 'description',\r
'visible',\r
+ 'description',\r
'id',\r
'author_id',\r
]\r
@item = Panel.edit(params[:id], @operators)
@item.boosts 'post'
jsn = nil
- p params[:json]
if params[:json]
jsn = JSON.parse(params[:json])
end