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
@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
+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
@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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
+
--- /dev/null
+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
--- /dev/null
+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
require_dependency "locmare/form"
require_dependency "locmare/profiler"
require_dependency "locmare/list_group"
+require_dependency "locmare/bucket"
"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