OSDN Git Service

add: success inspire
authoryasushiito <yas@pen-chan.jp>
Sat, 25 Apr 2015 02:46:02 +0000 (11:46 +0900)
committeryasushiito <yas@pen-chan.jp>
Sat, 25 Apr 2015 02:46:02 +0000 (11:46 +0900)
app/assets/javascripts/controllers/panels.js.coffee
app/assets/javascripts/editor/panel_editor/element/element_board.js.coffee
app/assets/javascripts/editor/panel_editor/root.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee
app/assets/javascripts/locmare/form.js.coffee
app/assets/javascripts/locmare/list_group/lib/pager.js.coffee
app/assets/javascripts/pettanr/inspire.js.coffee [new file with mode: 0644]
app/assets/javascripts/views/panels/body.js.coffee
app/assets/javascripts/views/panels/show.js.coffee
app/assets/javascripts/views/show.js.coffee
app/assets/javascripts/yasapp.js

index 6fae87a..86e5049 100644 (file)
@@ -37,7 +37,7 @@ class Pettanr.PanelsController extends Pettanr.AppController
   \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
index fa0b07b..bdd87b2 100644 (file)
@@ -35,7 +35,6 @@ class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.E
       item: @element(), \r
       element_form: true, \r
       submit: null, \r
-      operators: Pettanr.cache.operators,\r
     })\r
   \r
   render: () ->\r
index df0fdf8..7e39a41 100644 (file)
@@ -17,7 +17,6 @@ class Editor.EditorModule.DockModule.TabModule.RootBayBody extends Editor.Editor
       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
index 7e8a034..f6e1401 100644 (file)
@@ -89,21 +89,3 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.Vi
   \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
index 475d116..65a30e9 100644 (file)
@@ -71,14 +71,7 @@ class Locmare.Form extends Locmare.FormBase
     })\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
@@ -105,6 +98,15 @@ class Locmare.Form extends Locmare.FormBase
     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
@@ -116,11 +118,12 @@ class Locmare.Form extends Locmare.FormBase
     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
@@ -190,7 +193,7 @@ class Locmare.Form extends Locmare.FormBase
   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
@@ -200,11 +203,19 @@ class Locmare.Form extends Locmare.FormBase
       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
index edf41e4..f1010da 100644 (file)
@@ -25,7 +25,7 @@ class Locmare.ListGroupModule.LibModule.PagerModule.Default extends Backbone.Vie
     @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
diff --git a/app/assets/javascripts/pettanr/inspire.js.coffee b/app/assets/javascripts/pettanr/inspire.js.coffee
new file mode 100644 (file)
index 0000000..d967e0a
--- /dev/null
@@ -0,0 +1,73 @@
+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
index 17a5dd8..065490a 100644 (file)
@@ -124,15 +124,19 @@ class Pettanr.Views.Panel.Footer extends Backbone.View
   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
@@ -145,3 +149,6 @@ class Pettanr.Views.Panel.Footer extends Backbone.View
   click_edit: () ->\r
     @trigger('click:edit')\r
   \r
+  click_inspire: () ->\r
+    @trigger('click:inspire')\r
+  \r
index 9d2c68e..e527a96 100644 (file)
@@ -31,6 +31,7 @@ class Pettanr.Views.Panel.Show extends Backbone.View
     @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
@@ -52,6 +53,11 @@ class Pettanr.Views.Panel.Show extends Backbone.View
   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
@@ -67,6 +73,9 @@ class Pettanr.Views.Panel.Show extends Backbone.View
   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
index d1f16aa..372ea4c 100644 (file)
@@ -96,9 +96,6 @@ class Pettanr.Views.Show.LinkedEditButton extends Tag.A
       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
@@ -108,8 +105,18 @@ class Pettanr.Views.Show.LinkedDestroyButton extends Tag.A
       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
index e465ec1..3fcc542 100644 (file)
 //= require ./pettanr/action_filter
 //= require ./pettanr/proxy
 //= require ./pettanr/cache
+//= require ./pettanr/inspire
 //= require ./backbone.fetch-cache
 //= require main