\r
show_html: () -> \r
@item = @item.with_elements() # retake panel for 'with_elements' mode\r
- @item.fetch({cache: true}).done =>\r
+ @item.fetch({cache: false}).done =>\r
@item.attributes = @item.replaced_attributes()\r
@trigger('title', @params, @item.get('caption'))\r
show = new Pettanr.Views.Panel.Show({\r
item: @element(), \r
element_form: true, \r
submit: null, \r
- operators: Pettanr.cache.operators,\r
})\r
\r
render: () ->\r
use_name: 'default' \r
item: @root_item(), \r
submit: 'default' \r
- action: '/' + @root_item().table_name() + '/' + Pettanr.to_s(@root_item().get('id'))\r
})\r
@listenTo(@form, 'http_post', @http_post)\r
@listenTo(@form, 'success', @post_success)\r
\r
class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule\r
\r
-class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule\r
-class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Icon extends Backbone.View\r
- tagName: 'div'\r
- \r
- initialize: (options) ->\r
- @name = options.name\r
- @el.className = 'filer-item-pick'\r
- @button = new Pettanr.Views.Common.PickIcon({name: @name})\r
- \r
- render: () ->\r
- this.$el.html('')\r
- @listenTo(@button, 'click', @click)\r
- this.$el.append(@button.render().el)\r
- this\r
- \r
- click: () ->\r
- @trigger('click', this)\r
- \r
})\r
#this.$el.append(@error_explanation.render().el) if not @error_explanation\r
this.$el.append(@div_fields.render().el)\r
- if @element_form\r
- _.each @item.my_class().child_models(), (element_model) =>\r
- items = @item.element_items(element_model)\r
- if @item.my_class().my_manifest().associations.is_has_one(element_model)\r
- @add_element(items)\r
- else\r
- _.each items, (item) =>\r
- @add_element(item)\r
+ @add_elements() if @element_form\r
if @submit\r
c = @submit_class()\r
@div_submit = new c({form: this})\r
else\r
@item.edit_url()\r
\r
+ add_elements: () ->\r
+ _.each @item.my_class().child_models(), (element_model) =>\r
+ items = @item.element_items(element_model)\r
+ if @item.my_class().my_manifest().associations.is_has_one(element_model)\r
+ @add_element(items)\r
+ else\r
+ _.each items, (item) =>\r
+ @add_element(item)\r
+ \r
add_element: (element) ->\r
form = Locmare.Form.factory({\r
form_name: element.item_name(), \r
this.$el.append(form.render().el)\r
mm = @item.my_class().my_manifest()\r
em = element.my_class().my_manifest()\r
+ child_element_name = mm.associations.child_element_name(element.my_class())\r
if mm.associations.is_has_one(em)\r
- @child_forms[element.item_name()] = form\r
+ @child_forms[child_element_name] = form\r
else\r
- @child_forms[element.table_name()] ||= []\r
- @child_forms[element.table_name()].push(form)\r
+ @child_forms[child_element_name] ||= []\r
+ @child_forms[child_element_name].push(form)\r
form\r
\r
init_fields: () ->\r
quit: () ->\r
@item.release()\r
\r
- save_data: () ->\r
+ save_data: (inspire = false) ->\r
@item.my_class().child_models()\r
attrs = {}\r
_.each @fields, (field) =>\r
mm = @item.my_class().my_manifest()\r
em = child_form.item.my_class().my_manifest()\r
if mm.associations.is_has_one(em)\r
- attrs[name + '_attributes'] = child_form.save_data()\r
+ d = child_form.save_data(inspire)\r
+ if inspire\r
+ delete d['id']\r
+ delete d[@item.item_name() + '_id']\r
+ attrs[name + '_attributes'] = d\r
else\r
attrs[name + '_attributes'] = []\r
_.each child_form, (form) =>\r
- attrs[name + '_attributes'].push(form.save_data())\r
+ d = form.save_data(inspire)\r
+ if inspire\r
+ delete d['id']\r
+ delete d[@item.item_name() + '_id']\r
+ attrs[name + '_attributes'].push(d)\r
attrs\r
\r
class Locmare.ExtendForm extends Locmare.FormBase\r
@action = @action.original if @action.original\r
\r
@current_page = @page_status.page\r
- @per_page = @page_status.limit\r
+ @per_page = @page_status.page_size\r
@total_page = @page_status.total_page\r
\r
render: () ->\r
--- /dev/null
+class Pettanr.Inspire\r
+ \r
+ constructor: (options) ->\r
+ _.extend(this, Backbone.Events)\r
+ @item = options.item\r
+ \r
+ inspire: () -> \r
+ @item = @item.with_elements() # retake panel for 'with_elements' mode\r
+ @item.fetch({cache: false}).done =>\r
+ @item.attributes = @item.replaced_attributes()\r
+ delete @item.attributes['id']\r
+ @item.overwrite({})\r
+ @set_root()\r
+ @set_elements()\r
+ @save()\r
+ \r
+ set_root: () ->\r
+ @root_form = Locmare.Form.factory({\r
+ form_name: @item.item_name(), \r
+ use_name: 'default' \r
+ item: @item, \r
+ submit: 'default' \r
+ })\r
+ \r
+ set_elements: () ->\r
+ @element_forms = _.map @item.zorderd_elements(), (element) =>\r
+ form = Locmare.Form.factory({\r
+ form_name: element.item_name(), \r
+ use_name: 'default' \r
+ item: element, \r
+ element_form: true, \r
+ submit: null, \r
+ })\r
+ form.add_elements()\r
+ form\r
+ \r
+ save: () ->\r
+ # merge panel and elements\r
+ attrs = @root_form.save_data()\r
+ delete attrs['id']\r
+ _.extend(attrs, @elements_save_data())\r
+ # save json data by panel form\r
+ @listenTo(@root_form, 'success', @post_success)\r
+ @listenTo(@root_form, 'fail', @post_fail)\r
+ @root_form.save(attrs)\r
+ \r
+ elements_save_data: () ->\r
+ attrs = {}\r
+ _.each @element_forms, (element_form) =>\r
+ mm = @item.my_class().my_manifest()\r
+ em = element_form.item.my_class().my_manifest()\r
+ child_element_name = mm.associations.child_element_name(element_form.item.my_class())\r
+ if mm.associations.is_has_one(em)\r
+ name = element_form.item.item_name() + '_attributes'\r
+ d = element_form.save_data(true)\r
+ delete d['id']\r
+ delete d['panel_id']\r
+ attrs[name] = d\r
+ else\r
+ name = element_form.item.table_name() + '_attributes'\r
+ attrs[name] ||= []\r
+ d = element_form.save_data(true)\r
+ delete d['id']\r
+ delete d['panel_id']\r
+ attrs[name].push(d)\r
+ attrs\r
+ \r
+ post_success: (model, response) ->\r
+ @trigger('inspire', model)\r
+ \r
+ post_fail: (model, response) ->\r
+ @trigger('fail', response)\r
+ \r
retrieve_author: (@author) -> \r
@panel_icon = new Pettanr.Views.Panel.Icon({item: @panel, half: true})\r
@author_icon = new Pettanr.Views.Author.Icon({item: @author, half: true})\r
+ @inspire_icon = new Pettanr.Views.Show.LinkedInspireIcon({item: @panel, half: true})\r
@edit_button = new Pettanr.Views.Show.LinkedEditButton({item: @panel})\r
@listenTo(@panel_icon, 'click', @click_panel)\r
@listenTo(@author_icon, 'click', @click_author)\r
@listenTo(@edit_button, 'click', @click_edit)\r
+ @listenTo(@inspire_icon, 'click', @click_inspire)\r
this.$el.append(@panel_icon.render().el)\r
this.$el.append(@author_icon.render().el)\r
this.$el.append(\r
Pettanr.AppHelper.distance_of_time_in_words_to_now(@panel.get('updated_at'))\r
)\r
+ if Pettanr.cache.operators.is_author()\r
+ this.$el.append(@inspire_icon.render().el)\r
if @panel.is_own()\r
this.$el.append(@edit_button.render().el)\r
\r
click_edit: () ->\r
@trigger('click:edit')\r
\r
+ click_inspire: () ->\r
+ @trigger('click:inspire')\r
+ \r
@listenTo(@footer, 'click:panel', @click_show)\r
@listenTo(@footer, 'click:author', @click_author)\r
@listenTo(@footer, 'click:edit', @click_edit)\r
+ @listenTo(@footer, 'click:inspire', @click_inspire)\r
@listenTo(@credits, 'click:credit:icon', @click_credit_icon)\r
\r
render: () ->\r
click_edit: () ->\r
@trigger('http_get', @panel.edit_url())\r
\r
+ click_inspire: () ->\r
+ inspire = new Pettanr.Inspire({item: @panel})\r
+ @listenTo(inspire, 'inspire', @inspire)\r
+ inspire.inspire()\r
+ \r
click_prof: () ->\r
@trigger('http_get', @panel.prof_url())\r
\r
add_pick: (target_model) ->\r
@header.add_pick(target_model)\r
\r
+ inspire: (item) ->\r
+ @trigger('http_get', item.show_url())\r
+ \r
class Pettanr.Views.Panel.ShowModule\r
class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header\r
\r
content: I18n.t('link.edit')\r
})\r
\r
- url: () ->\r
- @url\r
- \r
class Pettanr.Views.Show.LinkedDestroyButton extends Tag.A\r
\r
initialize: (options) ->\r
content: I18n.t('link.destroy')\r
})\r
\r
- url: () ->\r
- @destroy_url\r
+class Pettanr.Views.Show.LinkedInspireIcon extends Tag.A\r
+ \r
+ initialize: (options) ->\r
+ item = options.item\r
+ half = options.half\r
+ img = new Pettanr.Image.SymbolImg({\r
+ attr: {src: '/images/inspire.gif'}, half: half\r
+ })\r
+ super({\r
+ attr: {href: '/' + item.index_url() + '/inspire'}, \r
+ content: img.render().el\r
+ })\r
\r
class Pettanr.Views.Show.OwnerFooter extends Backbone.View\r
tagName: 'div'\r
//= require ./pettanr/action_filter
//= require ./pettanr/proxy
//= require ./pettanr/cache
+//= require ./pettanr/inspire
//= require ./backbone.fetch-cache
//= require main