@item.boosts 'post'\r
# Backbone.Model has defaults property\r
#@item.supply_default()\r
- Pettanr.History.lock_url = @item.new_url()\r
\r
set_edit: () ->\r
@set_model()\r
@item = new @my_model_class({id: @params['id']})\r
@item.fetch({cache: true}).done =>\r
@item.boosts 'post'\r
- Pettanr.History.lock_url = @item.edit_url()\r
@render_form()\r
+ Pettanr.History.lock = {url: @item.edit_url(), form: @form}\r
\r
render_form: () ->\r
@form = Locmare.Form.factory({\r
@trigger('ready', @form)\r
\r
form_new: () ->\r
- @set_new()\r
- @render_form()\r
+ if Pettanr.History.lock\r
+ @trigger('lock', @params)\r
+ else\r
+ @set_new()\r
+ @render_form()\r
+ Pettanr.History.lock = {url: @item.new_url(), form: @form}\r
\r
form_edit: () ->\r
- @set_edit()\r
+ if Pettanr.History.lock\r
+ @trigger('lock', @params)\r
+ else\r
+ @set_edit()\r
\r
post_success: (model, response) ->\r
@trigger('redirect', @form.item.show_url())\r
@trigger('success', model, response)\r
+ Pettanr.History.release()\r
\r
post_fail: (model, response) ->\r
@trigger('fail', response)\r
count: () ->\r
\r
new: () ->\r
- @trigger('title', @params)\r
- @set_new()\r
- Pettanr.History.lock_url = @item.new_url()\r
- @editor()\r
- @trigger('done', @params)\r
+ if Pettanr.History.lock\r
+ @trigger('lock', @params)\r
+ else\r
+ @trigger('title', @params)\r
+ @set_new()\r
+ @editor(@item.new_url())\r
+ @trigger('done', @params)\r
\r
edit: () ->\r
- @trigger('title', @params)\r
- @set_model()\r
- panel = new Pettanr.Panel({id: @params['id']})\r
- @item = panel.with_elements()\r
- @item.fetch({cache: false}).done =>\r
- Pettanr.History.lock_url = @item.edit_url()\r
- @editor()\r
- @trigger('done', @params)\r
+ if Pettanr.History.lock\r
+ @trigger('lock', @params)\r
+ else\r
+ @trigger('title', @params)\r
+ @set_model()\r
+ panel = new Pettanr.Panel({id: @params['id']})\r
+ @item = panel.with_elements()\r
+ @item.fetch({cache: false}).done =>\r
+ @editor(@item.edit_url())\r
+ @trigger('done', @params)\r
\r
editor: () ->\r
editor = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
editor.render()\r
+ Pettanr.History.lock = {url: @item.new_url(), form: editor}\r
@trigger('ready', editor)\r
\r
create: () ->\r
@operators = options.operators\r
@item = @panel\r
@dialog = new Editor.PanelEditor.Dialog({\r
- parent: this\r
+ parent: this, operators: @operators\r
})\r
@body = new Pettanr.Views.Panel.Body.Edit({\r
panel: @root_item(),\r
\r
render: () ->\r
this.$el.html('')\r
- # this.$el.append(@dialog.render().el)\r
- #@dialog.$el.dialog({autoOpen: false, width: 640, height: 560 })\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
\r
quit: () ->\r
@dialog.$el.dialog('destroy')\r
- Pettanr.History.lock_url = null # release editor\r
\r
http_post: (url, dock) ->\r
@trigger('http_post', url, this) # send editor\r
\r
initialize: (options) ->\r
@parent = options.parent\r
+ @operators = options.operators\r
+ @history = new Pettanr.Views.History({parent: this})\r
+ @listenTo(@history, 'http_get', @http_get)\r
\r
render: () ->\r
this.$el.html('')\r
+ @history.render()\r
this\r
\r
+ refresh: (view) ->\r
+ this.$el.html('')\r
+ this.$el.append(@history.el)\r
+ rb = new Tag.RowBreak()\r
+ this.$el.append(rb.render().el)\r
+ this.$el.append(view.el)\r
+ \r
+ getter_proxy: () ->\r
+ proxy = new Pettanr.Proxy({operators: @operators})\r
+ @listenTo(proxy, 'ready', @ready)\r
+ @listenTo(proxy, 'title', @title)\r
+ @listenTo(proxy, 'title', @push_history)\r
+ @listenTo(proxy, 'done', @done)\r
+ @listenTo(proxy, 'lock', @lock)\r
+ proxy\r
+ \r
+ http_get: (url, form) ->\r
+ @getter_proxy().http_get(url, form)\r
+ \r
+ get: (params, form) ->\r
+ @getter_proxy().get(params, form)\r
+ \r
+ ready: (view) ->\r
+ @listenTo(view, 'http_get', @http_get)\r
+ # @listenTo(view, 'http_post', @http_post)\r
+ @refresh(view)\r
+ \r
+ done: (params) ->\r
+ this.$el.dialog('open')\r
+ \r
+ lock: (params) ->\r
+ console.log('_lock')\r
+ \r
+ push_history: (params, str = null) ->\r
+ @history.push(params, str)\r
+ \r
+ title: (params, str = null) ->\r
+ t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title')\r
+ this.$el.dialog({title: t})\r
+ \r
this.$el.html('')\r
icon = new Pettanr.Image.Icon({item: @model})\r
linked_icon = new Editor.EditorModule.DockModule.NewElementLinkedButton({\r
- attr: {href: '#event' },\r
- content: icon.render().el,\r
- handler_name: 'click'\r
+ attr: {href: '#' },\r
+ content: icon.render().el\r
})\r
@listenTo(linked_icon, 'click', @click)\r
this.$el.append(linked_icon.render().el)\r
this\r
\r
click: () ->\r
- @set_dialog()\r
- @set_form()\r
- @dialog().$el.dialog('open')\r
- \r
- set_dialog: () ->\r
- @params = {\r
+ params = {\r
controller: @model.path_name(), action: 'index',\r
page_size: 6\r
}\r
- @list = Locmare.ListGroup.list(\r
- @model.path_name(), 'index', @operators(), @params\r
- )\r
- @list.open(() =>\r
- pager = Locmare.ListGroupModule.LibModule.Pager.factory(@list.page_status, @params)\r
- f = new Locmare.Filer({\r
- el: @dialog().$el,\r
- item_name: @model.item_name(), \r
- items: @list.items(), \r
- pager: pager, \r
- operators: @operators()\r
- })\r
- )\r
- this\r
+ @dialog().get(params, null)\r
+ @set_form()\r
\r
set_form: () ->\r
@form_wrapper().select(@model)\r
@parent = options.parent\r
\r
clear: () ->\r
- this.$el.html('new form')\r
+ this.$el.html('')\r
this\r
\r
render: () ->\r
image_dir: () ->\r
'/images/'\r
\r
+ quit: () ->\r
+ null\r
+ \r
class Locmare.Form extends Locmare.FormBase\r
\r
@factory: (options) ->\r
@cache = {}\r
@credits = {}\r
\r
- class Pettanr.Dialog extends Backbone.View\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.render().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
- # ignore retitle message\r
- # @listenTo(controller, 'retitle', @retitle)\r
- controller[params['action']]()\r
- \r
- local_navigate: (url) ->\r
- @router.local_navigate(url, true)\r
- \r
- \r
#>> https://gist.github.com/davidjbeveridge/3813724\r
@xeach: (arr, func, index=0) ->\r
if index < arr.length then [ func(arr[index], index), @xeach(arr, func, index + 1)... ] else []\r
@listenTo(controller, 'ready', @ready)\r
@listenTo(controller, 'title', @title)\r
@listenTo(controller, 'done', @done)\r
+ @listenTo(controller, 'lock', @lock)\r
action_name = params['action']\r
controller[action_name]()\r
\r
done: (params) ->\r
@trigger('done', params)\r
\r
+ lock: (params) ->\r
+ @trigger('lock', params)\r
+ \r
deny: (params, form, safe_url) ->\r
@trigger('deny', params, form, safe_url)\r
\r
class Pettanr.History extends Backbone.History\r
- @lock_url = null\r
+ @lock = null\r
\r
checkUrl: (e) ->\r
- if Pettanr.History.lock_url\r
+ if Pettanr.History.lock\r
if confirm('leave? edit data unsaved')\r
- Pettanr.History.lock_url = null\r
+ Pettanr.History.release()\r
else\r
- @history.pushState({}, document.title, '/' + Pettanr.History.lock_url)\r
+ @history.pushState({}, document.title, '/' + Pettanr.History.lock.url)\r
return false\r
super(e)\r
- \r
+ \r
+ @release: () ->\r
+ Pettanr.History.lock.form.quit()\r
+ Pettanr.History.lock = null\r
+ \r
Backbone.history = new Pettanr.History\r
class Pettanr.Router extends Backbone.Router\r
\r
@listenTo(proxy, 'title', @body_title)\r
@listenTo(proxy, 'title', @push_history)\r
@listenTo(proxy, 'done', @body_done)\r
+ @listenTo(proxy, 'lock', @body_lock)\r
proxy\r
\r
body_http_get: (url, form) ->\r
url = Pettanr.params_to_url(params)\r
@global_router.navigate(url, {trigger: false})\r
\r
+ body_lock: (params) ->\r
+ console.log('_lock')\r
+ \r
push_history: (params, str = null) ->\r
@history.push(params, str)\r
\r