OSDN Git Service

add bucket
authoryasushiito <yas@pen-chan.jp>
Sun, 27 Apr 2014 23:39:08 +0000 (08:39 +0900)
committeryasushiito <yas@pen-chan.jp>
Sun, 27 Apr 2014 23:39:08 +0000 (08:39 +0900)
app/assets/javascripts/manifest/work/buckets.js.coffee.erb
app/controllers/speech_balloons_controller.rb
lib/local_manifest/bucket.rb
lib/local_manifest/bucket/field_name.rb [new file with mode: 0644]
lib/local_manifest/bucket/member.rb [new file with mode: 0644]
lib/locmare/bucket.rb [new file with mode: 0644]
lib/locmare/bucket/field_name.rb [new file with mode: 0644]
lib/locmare/bucket/member.rb [new file with mode: 0644]
lib/locmare/locmare.rb
public/local_manifest.json

index dc1b234..17758c0 100644 (file)
   panel_picture: {\r
   },\r
   speech_balloon: {\r
+    members: {\r
+      balloon: {\r
+      },\r
+      speech: {\r
+      },\r
+    },\r
     field_names: [\r
-      'speech_balloon.caption',\r
-      'speech_balloon.id',\r
-      'speech_balloon.panel_id',\r
-      'speech_balloon.speech_balloon_template_id',\r
-      'speech_balloon.speech_balloon_template_classname',\r
-      'speech_balloon.z',\r
-      'speech_balloon.t',\r
+      'caption',\r
+      'id',\r
+      'panel_id',\r
+      'speech_balloon_template_id',\r
+      'speech_balloon_template_classname',\r
+      'z',\r
+      't',\r
       'speech_balloon_template_settings',\r
       'balloon.r',\r
       'balloon.x',\r
   resource_picture: {\r
   },\r
   speech_balloon_template: {\r
-    column_names: [\r
-      'name', \r
-      'classname', \r
-      'caption', \r
-      't', \r
-      'system_picture_id', \r
-      'settings', \r
-    ],\r
-    extend_settings: {\r
-      circle_speech_balloon_speech_balloon: {\r
-        columns: {\r
-        },\r
-        column_names: [\r
-        ],\r
-      },\r
-      circle_speech_balloon_balloon: {\r
-        columns: {\r
-        },\r
-        column_names: [\r
-        ],\r
-      },\r
-      circle_speech_balloon_speech: {\r
-        columns: {\r
-        },\r
-        column_names: [\r
-        ],\r
-      },\r
-      plain_speech_balloon_speech_balloon: {\r
-        columns: {\r
-        },\r
-        column_names: [\r
-        ],\r
-      },\r
-      square_speech_balloon_speech_balloon: {\r
-        columns: {\r
-        },\r
-        column_names: [\r
-        ],\r
-      },\r
-    }, \r
-    associations: {\r
-      belongs_to: [\r
-        'system_picture',\r
-      ],\r
-    }, \r
   },\r
   writing_format: {\r
-    column_names: [\r
-      'name', \r
-      'classname', \r
-      'caption', \r
-      'system_picture_id', \r
-      'settings', \r
-    ],\r
-    extend_settings: {\r
-      pettanr_simple_format_writing_format: {\r
-        columns: {\r
-        },\r
-        column_names: [\r
-        ],\r
-      },\r
-    }, \r
-    associations: {\r
-      belongs_to: [\r
-        'system_picture',\r
-      ],\r
-      has_many: [\r
-        #'speeches.by_writing_format', \r
-      ],\r
-    }, \r
   },\r
   license_group: {\r
-    column_names: [\r
-      'name', \r
-      'classname', \r
-      'caption', \r
-      'url', \r
-    ],\r
-    extend_settings: {\r
-      pettanr_pettan_commons_v01_licenses_license: {\r
-        columns: {\r
-          open: {\r
-          },\r
-          commercial: {\r
-          },\r
-          official: {\r
-          },\r
-          attribution: {\r
-          },\r
-          derive: {\r
-          }, \r
-          thumbnail: {\r
-          }, \r
-          gif_convert: {\r
-          }, \r
-          reverse: {\r
-          }, \r
-          sync_vh: {\r
-          }, \r
-          overlap: {\r
-          }, \r
-        },\r
-        column_names: [\r
-          'open', \r
-          'commercial', \r
-          'official', \r
-          'attribution:', \r
-          'derive', \r
-          'thumbnail', \r
-          'gif_convert', \r
-          'reverse', \r
-          'sync_vh', \r
-          'overlap', \r
-        ],\r
-      },\r
-      pettanr_pettan_commons_v01_licenses_credit_picture: {\r
-        columns: {\r
-        },\r
-        column_names: [\r
-          'source_url_btn_id', \r
-          'source_url_off_btn_id', \r
-        ],\r
-      },\r
-    },\r
-    associations: {\r
-      has_many: [\r
-        'licenses.by_license_group', \r
-      ],\r
-    }, \r
-  },\r
-  license: {\r
-    columns: {\r
-      license_group_settings: {\r
-        type: 'extend',\r
-        args: {\r
-          boost_name: 'license_group',\r
-        },\r
-      }, \r
-      credit_picture_settings: {\r
-        type: 'extend',\r
-        args: {\r
-          boost_name: 'credit_picture',\r
-        },\r
-      }, \r
-    },\r
-    column_names: [\r
-      'license_group_id', \r
-      'license_group_classname', \r
-      'name', \r
-      'caption', \r
-      'system_picture_id', \r
-      'url', \r
-      'license_group_settings', \r
-      'credit_picture_settings', \r
-    ],\r
   },\r
   author: {\r
   },\r
index 4198bec..b486f14 100644 (file)
@@ -97,9 +97,9 @@ class SpeechBalloonsController < ApplicationController
     @speech_balloon.attributes = params[:speech_balloon]
     
     @speech_balloon_template = @speech_balloon.speech_balloon_template
-    @speech_balloon.boost
+    @speech_balloon.boosts 'post'
     
-    params[:speech_balloon][:balloon_attributes][:system_picture_id] = @speech_balloon.get_balloon.select_system_picture 
+    params[:speech_balloon][:balloon_attributes][:system_picture_id] = @speech_balloon.balloon.select_system_picture 
     
     @panel = Panel.edit(@speech_balloon.panel.id, @operators)
     @speech_balloon.overwrite @panel.id
index ab86f85..94924c6 100644 (file)
@@ -1,15 +1,22 @@
+ManifestBase.require_modules "local_manifest/bucket/", 
+  %w|member field_name|
+
 module LocalManifest
   class Bucket < ManifestBase::Base
+    include BucketModule
     
-    attr :columns, :column_names, :extend_settings, :lists, :associations
+    attr :members, :field_names
     
     def set_default
       super
-      @json['columns'] ||= {}
+      @json['members'] ||= {}
+      @json['field_names'] ||= {}
     end
     
     def init
       super
+      @members = ManifestBase.load_name_values self, @json, 'members', Member
+      @field_names = ManifestBase.load_value self, @json, 'field_names', FieldName
     end
     
     def item_name
@@ -20,32 +27,6 @@ module LocalManifest
       @column_names
     end
     
-      def set_defaulta
-        super
-        n = @name.split '.'
-        if n.size > 1
-          @args['model_name'] ||= n[0]
-          @args['column_name'] ||= n[1]
-        else
-          @args['model_name'] ||= self.form.name
-          @args['column_name'] ||= @name
-        end
-        @args['label'] ||= {}
-        @args['tag'] ||= {}
-        @args['helpers'] ||= {}
-        @args['row_break'] ||= true
-      end
-      
-      def inita
-        super
-        @model_name = @args['model_name']
-        @column_name = @args['column_name']
-        @label = ManifestBase.load_type_args self, @args, 'label', LabelFactory
-        @tag = ManifestBase.load_type_args self, @args, 'tag', TagFactory
-        @helpers = ManifestBase.load_type_name_args self, @args, 'helpers', HelperFactory
-        @row_break = @args['row_break']
-      end
-      
   end
   
 end
diff --git a/lib/local_manifest/bucket/field_name.rb b/lib/local_manifest/bucket/field_name.rb
new file mode 100644 (file)
index 0000000..2863350
--- /dev/null
@@ -0,0 +1,28 @@
+module LocalManifest
+  module BucketModule
+    class FieldName < ManifestBase::Values
+      attr :form_name, :field_name
+      
+      def set_default
+        super
+      end
+      
+      def init
+        super
+        t = @values.split '.'
+        @form_name = t.size < 2 ? self.bucket_name : t.first
+        @field_name = t.last
+      end
+      
+      def bucket_name
+        @parent.name
+      end
+      
+      def bucket_manifest
+        @parent.manifest
+      end
+      
+    end
+    
+  end
+end
diff --git a/lib/local_manifest/bucket/member.rb b/lib/local_manifest/bucket/member.rb
new file mode 100644 (file)
index 0000000..75a58fb
--- /dev/null
@@ -0,0 +1,19 @@
+module LocalManifest
+  module BucketModule
+    class Member < ManifestBase::NameValues
+      attr :members
+      
+      def set_default
+        super
+        @values['members'] ||= {}
+      end
+      
+      def init
+        super
+        @members = ManifestBase.load_name_values self, @values, 'members', Member
+      end
+      
+    end
+    
+  end
+end
diff --git a/lib/locmare/bucket.rb b/lib/locmare/bucket.rb
new file mode 100644 (file)
index 0000000..2a80ef8
--- /dev/null
@@ -0,0 +1,80 @@
+require_dependency "locmare/bucket/member"
+require_dependency "locmare/bucket/field_name"
+
+module Locmare
+  class Bucket
+    include BucketModule
+    attr :manifest, :bucket_name, :item, :mounted, :submit, :operators, :template_dir, 
+      :fields
+    def initialize bucket_name, item, mounted, submit, operators
+      @bucket_name = bucket_name
+      @item = item
+      @mounted = mounted
+      @submit = submit
+      @operators = operators
+      
+      @item.boosts 'post'
+      self.init_fields
+      @manifest = LocalManifest.manifest.forms[@form_name]
+      @template_dir = 'templates/r/form/'
+      @fields = {}
+    end
+    
+    def init_fields
+      @manifest.each_field do |field_name, field_manifest| 
+        if boost_name = @item.class.find_boost_name(field_name)
+          extend_form_name = @item.boosters[boost_name].model_name
+          extend_item = @item.boosters[boost_name].extend_item
+          @fields[field_name] = ExtendForm.new self, extend_form_name, extend_item, @mounted, @operators, field_name
+        else
+          @fields[field_name] = Field.new self, field_name, field_manifest
+        end
+      end
+    end
+    
+    def each_field
+      @manifest.field_names.each do |field_name| 
+        yield field_name, @fields[field_name]
+      end
+    end
+    
+    def template_file_name
+      "form"
+    end
+    
+    def template_name
+      self.template_dir + self.template_file_name
+    end
+    
+    def fields_template_name
+      self.template_dir + 'fields'
+    end
+    
+    def image_dir
+      '/images/'
+    end
+    
+    def submit_name
+      if @item.new_record?
+        @item.table_name + '.submit.new'
+      else
+        @item.table_name + '.submit.edit'
+      end
+    end
+    
+    def submit_template_dir
+      self.template_dir + 'submit/'
+    end
+    
+    def submit_template_name
+      if @submit
+        self.submit_template_dir + 'submit'
+      else
+        self.submit_template_dir + 'none'
+      end
+    end
+    
+  end
+  
+end
+
diff --git a/lib/locmare/bucket/field_name.rb b/lib/locmare/bucket/field_name.rb
new file mode 100644 (file)
index 0000000..fbc2c59
--- /dev/null
@@ -0,0 +1,65 @@
+module Locmare
+  module BucketModule
+    class FieldName
+      attr :bucket, :field_name, :field_manifest, 
+        :label, :tag, :helpers, :options
+      def initialize bucket, field_name, field_manifest
+        @bucket = bucket
+        @field_name = field_name
+        @field_manifest = field_manifest
+        @label = LabelFactory.factory self, @field_manifest.label
+        @tag = TagFactory.factory self, @field_manifest.tag
+        @helpers = {}
+        @field_manifest.helpers.each {|helper_name, helper_manifest|
+          @helpers[helper_name] = HelperFactory.factory self, helper_manifest
+        }
+        @options = {'data-model' => @field_manifest.form_name}
+      end
+      
+      def item
+        @form.item
+      end
+      
+      def form_field_name
+        self.form_name + '[' + @field_name + ']'
+      end
+      
+      def form_name
+        @form.form_name
+      end
+      
+      def template_dir
+        @form.template_dir + 'field/'
+      end
+      
+      def template_file_name
+        'default'
+      end
+      
+      def template_name
+        self.template_dir + self.template_file_name
+      end
+      
+      def template_option
+        {:field => self}
+      end
+      
+      def row_break_template_dir
+        @form.template_dir + 'row_break/'
+      end
+      
+      def row_break_template_file_name
+        if @field_manifest.row_break
+          'br'
+        else
+          'no_break'
+        end
+      end
+      
+      def row_break_template_name
+        self.row_break_template_dir + self.row_break_template_file_name
+      end
+      
+    end
+  end
+end
diff --git a/lib/locmare/bucket/member.rb b/lib/locmare/bucket/member.rb
new file mode 100644 (file)
index 0000000..ea7dab3
--- /dev/null
@@ -0,0 +1,81 @@
+module Locmare
+  module BucketModule
+    class Member
+      attr :form, :field_name, :field_manifest, 
+        :label, :tag, :helpers, :options
+      def initialize form, field_name, field_manifest
+        @form = form
+        @field_name = field_name
+        @field_manifest = field_manifest
+        @label = LabelFactory.factory self, @field_manifest.label
+        @tag = TagFactory.factory self, @field_manifest.tag
+        @helpers = {}
+        @field_manifest.helpers.each {|helper_name, helper_manifest|
+          @helpers[helper_name] = HelperFactory.factory self, helper_manifest
+        }
+        @options = {'data-model' => @field_manifest.form_name}
+      end
+      
+      def mounted
+        @form.mounted ? 0 : 1
+      end
+      
+      def mount_option
+        {'mount' => self.mounted}
+      end
+      
+      def item
+        @form.item
+      end
+      
+      def value
+        self.item.attributes[@field_manifest.column_name]
+      end
+      
+      def options tag_options = {}
+        self.item.field_tag_attributes(@field_manifest.column_name, tag_options).merge(self.mount_option)
+      end
+      
+      def form_field_name
+        self.form_name + '[' + @field_name + ']'
+      end
+      
+      def form_name
+        @form.form_name
+      end
+      
+      def template_dir
+        @form.template_dir + 'field/'
+      end
+      
+      def template_file_name
+        'default'
+      end
+      
+      def template_name
+        self.template_dir + self.template_file_name
+      end
+      
+      def template_option
+        {:field => self}
+      end
+      
+      def row_break_template_dir
+        @form.template_dir + 'row_break/'
+      end
+      
+      def row_break_template_file_name
+        if @field_manifest.row_break
+          'br'
+        else
+          'no_break'
+        end
+      end
+      
+      def row_break_template_name
+        self.row_break_template_dir + self.row_break_template_file_name
+      end
+      
+    end
+  end
+end
index 3606e89..6c66269 100644 (file)
@@ -2,3 +2,4 @@ require_dependency "locmare/filer"
 require_dependency "locmare/form"
 require_dependency "locmare/profiler"
 require_dependency "locmare/list_group"
+require_dependency "locmare/bucket"
index 458e7e1..9ade01f 100644 (file)
     "panel": {},\r
     "panel_picture": {},\r
     "speech_balloon": {\r
+      "members": {\r
+        "balloon": {},\r
+        "speech": {}\r
+      },\r
       "field_names": [\r
-        "speech_balloon.caption",\r
-        "speech_balloon.id",\r
-        "speech_balloon.panel_id",\r
-        "speech_balloon.speech_balloon_template_id",\r
-        "speech_balloon.speech_balloon_template_classname",\r
-        "speech_balloon.z",\r
-        "speech_balloon.t",\r
+        "caption",\r
+        "id",\r
+        "panel_id",\r
+        "speech_balloon_template_id",\r
+        "speech_balloon_template_classname",\r
+        "z",\r
+        "t",\r
         "speech_balloon_template_settings",\r
         "balloon.r",\r
         "balloon.x",\r
     "original_picture": {},\r
     "picture": {},\r
     "resource_picture": {},\r
-    "speech_balloon_template": {\r
-      "column_names": [\r
-        "name",\r
-        "classname",\r
-        "caption",\r
-        "t",\r
-        "system_picture_id",\r
-        "settings"\r
-      ],\r
-      "extend_settings": {\r
-        "circle_speech_balloon_speech_balloon": {\r
-          "columns": {},\r
-          "column_names": []\r
-        },\r
-        "circle_speech_balloon_balloon": {\r
-          "columns": {},\r
-          "column_names": []\r
-        },\r
-        "circle_speech_balloon_speech": {\r
-          "columns": {},\r
-          "column_names": []\r
-        },\r
-        "plain_speech_balloon_speech_balloon": {\r
-          "columns": {},\r
-          "column_names": []\r
-        },\r
-        "square_speech_balloon_speech_balloon": {\r
-          "columns": {},\r
-          "column_names": []\r
-        }\r
-      },\r
-      "associations": {\r
-        "belongs_to": [\r
-          "system_picture"\r
-        ]\r
-      }\r
-    },\r
-    "writing_format": {\r
-      "column_names": [\r
-        "name",\r
-        "classname",\r
-        "caption",\r
-        "system_picture_id",\r
-        "settings"\r
-      ],\r
-      "extend_settings": {\r
-        "pettanr_simple_format_writing_format": {\r
-          "columns": {},\r
-          "column_names": []\r
-        }\r
-      },\r
-      "associations": {\r
-        "belongs_to": [\r
-          "system_picture"\r
-        ],\r
-        "has_many": []\r
-      }\r
-    },\r
-    "license_group": {\r
-      "column_names": [\r
-        "name",\r
-        "classname",\r
-        "caption",\r
-        "url"\r
-      ],\r
-      "extend_settings": {\r
-        "pettanr_pettan_commons_v01_licenses_license": {\r
-          "columns": {\r
-            "open": {},\r
-            "commercial": {},\r
-            "official": {},\r
-            "attribution": {},\r
-            "derive": {},\r
-            "thumbnail": {},\r
-            "gif_convert": {},\r
-            "reverse": {},\r
-            "sync_vh": {},\r
-            "overlap": {}\r
-          },\r
-          "column_names": [\r
-            "open",\r
-            "commercial",\r
-            "official",\r
-            "attribution:",\r
-            "derive",\r
-            "thumbnail",\r
-            "gif_convert",\r
-            "reverse",\r
-            "sync_vh",\r
-            "overlap"\r
-          ]\r
-        },\r
-        "pettanr_pettan_commons_v01_licenses_credit_picture": {\r
-          "columns": {},\r
-          "column_names": [\r
-            "source_url_btn_id",\r
-            "source_url_off_btn_id"\r
-          ]\r
-        }\r
-      },\r
-      "associations": {\r
-        "has_many": [\r
-          "licenses.by_license_group"\r
-        ]\r
-      }\r
-    },\r
-    "license": {\r
-      "columns": {\r
-        "license_group_settings": {\r
-          "type": "extend",\r
-          "args": {\r
-            "boost_name": "license_group"\r
-          }\r
-        },\r
-        "credit_picture_settings": {\r
-          "type": "extend",\r
-          "args": {\r
-            "boost_name": "credit_picture"\r
-          }\r
-        }\r
-      },\r
-      "column_names": [\r
-        "license_group_id",\r
-        "license_group_classname",\r
-        "name",\r
-        "caption",\r
-        "system_picture_id",\r
-        "url",\r
-        "license_group_settings",\r
-        "credit_picture_settings"\r
-      ]\r
-    },\r
+    "speech_balloon_template": {},\r
+    "writing_format": {},\r
+    "license_group": {},\r
     "author": {},\r
     "artist": {},\r
     "system_picture": {}\r