type: 'filter',\r
},\r
by_author: {\r
- type: 'filter',\r
+ type: 'foreign_filter',\r
args: {\r
tree_name: 'scroll_owner',\r
},\r
type: 'private',\r
},\r
by_author: {\r
- type: 'foreign_filter',\r
- args: {\r
- tree_name: 'comic_owner',\r
- },\r
+ type: 'filter',\r
},\r
},\r
},\r
confirm_confirm_confirm = () ->\r
confirm( )\r
editor = window.PettanrEditor\r
- configurations = {\r
+ manifest = {\r
controllers: window.controllers,\r
models: window.models,\r
system_resources: window.system_resources,\r
magic_numbers: window.magic_numbers,\r
- locals: {\r
- profilers: window.profilers,\r
- filers: window.filers,\r
- list_groups: window.list_groups,\r
- forms: window.forms,\r
- }\r
}\r
- j = JSON.stringify(configurations, undefined, 2)\r
- $('#pettanr-configurations').val(j)\r
+ local_manifest = {\r
+ list_groups: window.list_groups,\r
+ profilers: window.profilers,\r
+ filers: window.filers,\r
+ forms: window.forms,\r
+ }\r
+ j = JSON.stringify(manifest, undefined, 2)\r
+ $('#pettanr-manifest').val(j)\r
+ j = JSON.stringify(local_manifest, undefined, 2)\r
+ $('#pettanr-local_manifest').val(j)\r
WritingFormat = window.PettanrWritingFormat\r
WritingFormat.load($('#writing_formats'))\r
SpeechBalloonTemplate = window.PettanrSpeechBalloonTemplate\r
$ ->\r
- configurations = {\r
+ manifest = {\r
controllers: window.controllers,\r
models: window.models,\r
system_resources: window.system_resources,\r
magic_numbers: window.magic_numbers,\r
- locals: {\r
- list_groups: window.list_groups,\r
- profilers: window.profilers,\r
- filers: window.filers,\r
- forms: window.forms,\r
- }\r
}\r
- j = JSON.stringify(configurations, undefined, 2)\r
- $('#pettanr-configurations').val(j)\r
+ local_manifest = {\r
+ list_groups: window.list_groups,\r
+ profilers: window.profilers,\r
+ filers: window.filers,\r
+ forms: window.forms,\r
+ }\r
+ j = JSON.stringify(manifest, undefined, 2)\r
+ $('#pettanr-manifest').val(j)\r
+ j = JSON.stringify(local_manifest, undefined, 2)\r
+ $('#pettanr-local_manifest').val(j)\r
def set_list
set_model
- @list = Manifest::View::ListGroup.list @my_action.item_name, @my_action.list_name
+ @list = Locmare::ListGroup.list @my_action.item_name, @my_action.list_name
end
def filer_list
@items = list_result.items
respond_to do |format|
format.html {
- @filer = Manifest::View::Filer.new @list.item_name, list_result.items, list_result.paginate, @operators
+ @filer = Locmare::Filer.new @list.item_name, list_result.items, list_result.paginate, @operators
render @filer.template_name, :locals => {
:filer => @filer
}
def show_prof_format format
format.prof {
self.formats = [:html]
- @profiler = Manifest::View::Profiler.new @my_model.model_name, @item, @operators
+ @profiler = Locmare::Profiler.new @my_model.model_name, @item, @operators
render @profiler.template_name, :locals => {
:profiler => @profiler
}
def render_form
respond_to do |format|
format.html {
- @form = Manifest::View::Form.new @item.item_name, @item, true, true, @operators
+ @form = Locmare::Form.new @item.item_name, @item, true, true, @operators
render @form.template_name, :locals => {
:form => @form
}
end
def assist_items item_name, list_name
- list = Manifest::View::ListGroup.list item_name, list_name
+ list = Locmare::ListGroup.list item_name, list_name
list_result = list.open(@operators, {:id => @item.id, :page => 1, :page_size => 5})
list_result.items
end
def reload_manifest
Manifest::load JSON.parse(open(Rails.root + 'public/manifest.json').read)
Manifest.manifest.init
+ LocalManifest::load JSON.parse(open(Rails.root + 'public/local_manifest.json').read)
+ LocalManifest.manifest.init
respond_to do |format|
format.html { redirect_to({:action => :index}) }
end
<div>
<%= link_to 'reload_manifest', :action => :reload_manifest %>
</div>
- <%= text_area_tag "json", '', :id => 'pettanr-configurations' %>
+ <%= text_area_tag "json", '', :id => 'pettanr-manifest' %>
+ <%= text_area_tag "json", '', :id => 'pettanr-local_manifest' %>
# Initialize the rails application
Pettanr::Application.initialize!
require_dependency 'manifest'
+require_dependency 'local_manifest'
+require_dependency 'locmare'
require_dependency 'editor'
Manifest.manifest.init
+LocalManifest.manifest.init
+Manifest.manifest.system_resources_init
Manifest.manifest.load_models_manifest
def initialize parent
super
- @form = ::Manifest::View::Form.new self.root_item.item_name, self.root_item, self.mounted, true, @operators
+ @form = Locmare::Form.new self.root_item.item_name, self.root_item, self.mounted, true, @operators
@bucket = FormBucket.new self, @form
end
def initialize parent
super
- @form = ::Manifest::View::Form.new self.element.item_name, self.element, self.mounted, false, @operators
+ @form = Locmare::Form.new self.element.item_name, self.element, self.mounted, false, @operators
@bucket = FormBucket.new self, @form
end
--- /dev/null
+module LocalManifest
+end
+require_dependency "local_manifest/local_manifest"
+require_dependency "local_manifest/profiler"
+require_dependency "local_manifest/filer"
+require_dependency "local_manifest/form"
+require_dependency "local_manifest/list_group"
+LocalManifest::load JSON.parse(open(File.expand_path('../../public/local_manifest.json', __FILE__)).read)
+
+LocalManifest.manifest.init
-require_dependency "manifest/filer/symbol"
-require_dependency "manifest/filer/caption"
-require_dependency "manifest/filer/summary"
-require_dependency "manifest/filer/icon"
-require_dependency "manifest/filer/date"
-require_dependency "manifest/filer/edit"
-module Manifest
+require_dependency "local_manifest/filer/symbol"
+require_dependency "local_manifest/filer/caption"
+require_dependency "local_manifest/filer/summary"
+require_dependency "local_manifest/filer/icon"
+require_dependency "local_manifest/filer/date"
+require_dependency "local_manifest/filer/edit"
+module LocalManifest
class Filer
def self.manager manifest, my_manifests
-require_dependency "manifest/filer/caption/base"
-require_dependency "manifest/filer/caption/default"
-require_dependency "manifest/filer/caption/template"
-require_dependency "manifest/filer/caption/none"
-module Manifest
+require_dependency "local_manifest/filer/caption/base"
+require_dependency "local_manifest/filer/caption/default"
+require_dependency "local_manifest/filer/caption/template"
+require_dependency "local_manifest/filer/caption/none"
+module LocalManifest
module FilerModule
class CaptionFactory
include CaptionModule
-module Manifest
+module LocalManifest
module FilerModule
module CaptionModule
class Base
-require_dependency "manifest/filer/caption/default/face"
-require_dependency "manifest/filer/caption/default/link"
-module Manifest
+require_dependency "local_manifest/filer/caption/default/face"
+require_dependency "local_manifest/filer/caption/default/link"
+module LocalManifest
module FilerModule
module CaptionModule
class Default < Base
-require_dependency "manifest/filer/caption/default/face/face"
-module Manifest
+require_dependency "local_manifest/filer/caption/default/face/face"
+module LocalManifest
module FilerModule
module CaptionModule
module DefaultModule
-module Manifest
+module LocalManifest
module FilerModule
module CaptionModule
module DefaultModule
-require_dependency "manifest/filer/caption/default/link/link"
-module Manifest
+require_dependency "local_manifest/filer/caption/default/link/link"
+module LocalManifest
module FilerModule
module CaptionModule
module DefaultModule
-module Manifest
+module LocalManifest
module FilerModule
module CaptionModule
module DefaultModule
-module Manifest
+module LocalManifest
module FilerModule
module CaptionModule
class None < Base
-module Manifest
+module LocalManifest
module FilerModule
module CaptionModule
class Template < Base
-require_dependency "manifest/filer/date/date"
-module Manifest
+require_dependency "local_manifest/filer/date/date"
+module LocalManifest
module FilerModule
class DateFactory
include DateModule
-module Manifest
+module LocalManifest
module FilerModule
module DateModule
class Base
-require_dependency "manifest/filer/edit/edit"
-module Manifest
+require_dependency "local_manifest/filer/edit/edit"
+module LocalManifest
module FilerModule
class EditFactory
include EditModule
-module Manifest
+module LocalManifest
module FilerModule
module EditModule
class Base
-require_dependency "manifest/filer/icon/icon"
-module Manifest
+require_dependency "local_manifest/filer/icon/icon"
+module LocalManifest
module FilerModule
class IconFactory
include IconModule
-module Manifest
+module LocalManifest
module FilerModule
module IconModule
class Base
-require_dependency "manifest/filer/summary/summary"
-module Manifest
+require_dependency "local_manifest/filer/summary/summary"
+module LocalManifest
module FilerModule
class SummaryFactory
include SummaryModule
-module Manifest
+module LocalManifest
module FilerModule
module SummaryModule
class Base
-require_dependency "manifest/filer/symbol/base"
-require_dependency "manifest/filer/symbol/default"
-require_dependency "manifest/filer/symbol/template"
-module Manifest
+require_dependency "local_manifest/filer/symbol/base"
+require_dependency "local_manifest/filer/symbol/default"
+require_dependency "local_manifest/filer/symbol/template"
+module LocalManifest
module FilerModule
class SymbolFactory
include SymbolModule
-module Manifest
+module LocalManifest
module FilerModule
module SymbolModule
class Base
-require_dependency "manifest/filer/symbol/default/face"
-require_dependency "manifest/filer/symbol/default/link"
-module Manifest
+require_dependency "local_manifest/filer/symbol/default/face"
+require_dependency "local_manifest/filer/symbol/default/link"
+module LocalManifest
module FilerModule
module SymbolModule
class Default < Base
-require_dependency "manifest/filer/symbol/default/face/face"
-module Manifest
+require_dependency "local_manifest/filer/symbol/default/face/face"
+module LocalManifest
module FilerModule
module SymbolModule
module DefaultModule
-module Manifest
+module LocalManifest
module FilerModule
module SymbolModule
module DefaultModule
-require_dependency "manifest/filer/symbol/default/link/link"
-module Manifest
+require_dependency "local_manifest/filer/symbol/default/link/link"
+module LocalManifest
module FilerModule
module SymbolModule
module DefaultModule
-module Manifest
+module LocalManifest
module FilerModule
module SymbolModule
module DefaultModule
-module Manifest
+module LocalManifest
module FilerModule
module SymbolModule
class Template < Base
-require_dependency "manifest/form/field"
-module Manifest
+require_dependency "local_manifest/form/field"
+module LocalManifest
class Form
include FormModule
-require_dependency "manifest/form/field/field"
-module Manifest
+require_dependency "local_manifest/form/field/field"
+module LocalManifest
module FormModule
class FieldFactory
include FieldModule
-require_dependency "manifest/form/field/tag"
-require_dependency "manifest/form/field/label"
-require_dependency "manifest/form/field/helper"
-module Manifest
+require_dependency "local_manifest/form/field/tag"
+require_dependency "local_manifest/form/field/label"
+require_dependency "local_manifest/form/field/helper"
+module LocalManifest
module FormModule
class Field
include FieldModule
-require_dependency "manifest/form/field/helper/base"
-require_dependency "manifest/form/field/helper/size"
-require_dependency "manifest/form/field/helper/tail_angle"
-require_dependency "manifest/form/field/helper/color"
-require_dependency "manifest/form/field/helper/popup"
-module Manifest
+require_dependency "local_manifest/form/field/helper/base"
+require_dependency "local_manifest/form/field/helper/size"
+require_dependency "local_manifest/form/field/helper/tail_angle"
+require_dependency "local_manifest/form/field/helper/color"
+require_dependency "local_manifest/form/field/helper/popup"
+module LocalManifest
module FormModule
module FieldModule
class HelperFactory
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module HelperModule
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module HelperModule
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module HelperModule
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module HelperModule
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module HelperModule
-require_dependency "manifest/form/field/label/label"
-module Manifest
+require_dependency "local_manifest/form/field/label/label"
+module LocalManifest
module FormModule
module FieldModule
class LabelFactory
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module LabelModule
-require_dependency "manifest/form/field/tag/base"
-require_dependency "manifest/form/field/tag/text"
-require_dependency "manifest/form/field/tag/number"
-require_dependency "manifest/form/field/tag/text_area"
-require_dependency "manifest/form/field/tag/select"
-require_dependency "manifest/form/field/tag/hidden"
-module Manifest
+require_dependency "local_manifest/form/field/tag/base"
+require_dependency "local_manifest/form/field/tag/text"
+require_dependency "local_manifest/form/field/tag/number"
+require_dependency "local_manifest/form/field/tag/text_area"
+require_dependency "local_manifest/form/field/tag/select"
+require_dependency "local_manifest/form/field/tag/hidden"
+module LocalManifest
module FormModule
module FieldModule
class TagFactory
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module TagModule
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module TagModule
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module TagModule
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module TagModule
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module TagModule
-module Manifest
+module LocalManifest
module FormModule
module FieldModule
module TagModule
-require_dependency "manifest/list_group/list"
-module Manifest
+require_dependency "local_manifest/list_group/list"
+module LocalManifest
class ListGroup
include ListGroupModule
def self.manager manifest, my_manifests
-require_dependency "manifest/list_group/list/base"
-require_dependency "manifest/list_group/list/public"
-require_dependency "manifest/list_group/list/private"
-require_dependency "manifest/list_group/list/system_resource"
-require_dependency "manifest/list_group/list/filter"
-require_dependency "manifest/list_group/list/through_filter"
-require_dependency "manifest/list_group/list/foreign_filter"
-require_dependency "manifest/list_group/list/play"
-module Manifest
+require_dependency "local_manifest/list_group/list/base"
+require_dependency "local_manifest/list_group/list/public"
+require_dependency "local_manifest/list_group/list/private"
+require_dependency "local_manifest/list_group/list/system_resource"
+require_dependency "local_manifest/list_group/list/filter"
+require_dependency "local_manifest/list_group/list/through_filter"
+require_dependency "local_manifest/list_group/list/foreign_filter"
+require_dependency "local_manifest/list_group/list/play"
+module LocalManifest
module ListGroupModule
class ListFactory
include ListModule
-require_dependency "manifest/list_group/list/where"
-require_dependency "manifest/list_group/list/includes"
-module Manifest
+require_dependency "local_manifest/list_group/list/where"
+require_dependency "local_manifest/list_group/list/includes"
+module LocalManifest
module ListGroupModule
module ListModule
class Base
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
class FilterList < Base
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
class ForeignFilterList < FilterList
+ attr :tree_name
def set_default
super
+ @list_manifest['args']['tree_name'] ||= 'owner'
end
def init
super
- @filter_table_name = ::Manifest.manifest.models[@filter_item_name].classify.table_name
+ @tree_name = @args['tree_name']
end
end
-require_dependency "manifest/list_group/list/includes/base"
-require_dependency "manifest/list_group/list/includes/method"
-require_dependency "manifest/list_group/list/includes/auto"
-require_dependency "manifest/list_group/list/includes/none"
-module Manifest
+require_dependency "local_manifest/list_group/list/includes/base"
+require_dependency "local_manifest/list_group/list/includes/method"
+require_dependency "local_manifest/list_group/list/includes/auto"
+require_dependency "local_manifest/list_group/list/includes/none"
+module LocalManifest
module ListGroupModule
module ListModule
class IncludeFactory
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
module IncludeModule
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
module IncludeModule
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
module IncludeModule
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
module IncludeModule
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
class PlayList
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
class PrivateList < Base
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
class PublicList < Base
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
class SystemResourceList < Base
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
class ThroughFilterList < FilterList
-require_dependency "manifest/list_group/list/where/base"
-require_dependency "manifest/list_group/list/where/method"
-require_dependency "manifest/list_group/list/where/auto"
-module Manifest
+require_dependency "local_manifest/list_group/list/where/base"
+require_dependency "local_manifest/list_group/list/where/method"
+require_dependency "local_manifest/list_group/list/where/auto"
+module LocalManifest
module ListGroupModule
module ListModule
class WhereFactory
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
module WhereModule
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
module WhereModule
-module Manifest
+module LocalManifest
module ListGroupModule
module ListModule
module WhereModule
--- /dev/null
+module LocalManifest
+ class LocalManifest
+ cattr_accessor :manifest
+ attr :list_groups, :profilers, :filers, :forms
+ # call me before load routes.rb
+ # routes.rb needs engine_resources manifest in system_resources
+ # ex. it's adding license_groups routes
+ def initialize local_json
+ @local_json = local_json || {}
+ end
+
+ def init
+ # managers can't initialize before load application.rb
+ return unless defined? ::Pettanr
+ @list_groups = ListGroup.manager(self, @local_json['list_groups'] || {})
+ @filers = Filer.manager(self, @local_json['filers'] || {})
+ @profilers = Profiler.manager(self, @local_json['profilers'] || {})
+ @forms = Form.base_manager(self, @local_json['forms'] || {})
+ @forms.merge(Form.extend_manager(self, @local_json['forms'] || {}))
+ end
+
+ end
+
+ module ModuleMethods
+ def manifest
+ LocalManifest.manifest
+ end
+
+ def load local_json
+ LocalManifest.manifest = LocalManifest.new local_json
+ end
+
+ end
+
+ extend ModuleMethods
+end
+
-require_dependency "manifest/profiler/column"
-require_dependency "manifest/profiler/list"
-require_dependency "manifest/profiler/association"
-module Manifest
+require_dependency "local_manifest/profiler/column"
+require_dependency "local_manifest/profiler/list"
+require_dependency "local_manifest/profiler/association"
+module LocalManifest
class Profiler
def self.manager manifest, my_manifests
-require_dependency "manifest/profiler/association/belongs_to"
-require_dependency "manifest/profiler/association/has_many"
-require_dependency "manifest/profiler/association/has_one"
-module Manifest
+require_dependency "local_manifest/profiler/association/belongs_to"
+require_dependency "local_manifest/profiler/association/has_many"
+require_dependency "local_manifest/profiler/association/has_one"
+module LocalManifest
module ProfilerModule
class Association
include AssociationModule
-module Manifest
+module LocalManifest
module ProfilerModule
module AssociationModule
class BelongsTo
-module Manifest
+module LocalManifest
module ProfilerModule
module AssociationModule
class HasMany
raise "undefined list for profilers > #{self.profiler.item_name} > has_many > #{@profiler_list_name}\n"
end
end
- @list = ::Manifest::View::ListGroup.list @model_name, @list_name
+ @list = Locmare::ListGroup.list @model_name, @list_name
end
def model
-module Manifest
+module LocalManifest
module ProfilerModule
module AssociationModule
class HasOne
raise "undefined list for profilers > #{self.profiler.item_name} > has_one > #{@profiler_list_name}\n"
end
end
- @list = ::Manifest::View::ListGroup.list @model_name, @list_name
+ @list = Locmare::ListGroup.list @model_name, @list_name
end
def model
-module Manifest
+module LocalManifest
module ProfilerModule
class Column
def initialize item_name, column_name, item, operators, manifest
-module Manifest
+module LocalManifest
module ProfilerModule
class List
attr :profiler, :my_name, :list_manifest,
--- /dev/null
+require_dependency "locmare/locmare"
--- /dev/null
+require_dependency "locmare/filer/header"
+require_dependency "locmare/filer/body"
+require_dependency "locmare/filer/footer"
+module Locmare
+ class Filer
+ include FilerModule
+ attr :manifest, :item_name, :items, :paginate, :operators, :template_dir,
+ :header, :body, :footer
+ def initialize item_name, items, paginate, operators
+ @item_name = item_name
+ @items = items
+ @paginate = paginate
+ @operators = operators
+ @manifest = LocalManifest.manifest.filers[@item_name]
+ @template_dir = 'templates/r/filer/'
+ @header = Header.new self
+ @body = Body.new self
+ @footer = Footer.new self, paginate
+ end
+
+ def model
+ ::Manifest::item_name_to_model @item_name
+ end
+
+ def template_file_name
+ "filer"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ def image_dir
+ '/images/'
+ end
+
+ end
+end
+
--- /dev/null
+require_dependency "locmare/filer/body/file_header"
+require_dependency "locmare/filer/body/file_body"
+module Locmare
+ module FilerModule
+ class Body
+ include BodyModule
+ attr :filer,
+ :file_header, :file_body
+ def initialize filer
+ @filer = filer
+ @file_header = FileHeader.new self
+ @file_body = FileBody.new self
+ end
+
+ def manifest
+ @filer.manifest
+ end
+
+ def item_name
+ self.filer.item_name
+ end
+
+ def model
+ self.filer.model
+ end
+
+ def items
+ self.filer.items
+ end
+
+ def template_dir
+ @filer.template_dir
+ end
+
+ def template_file_name
+ "body"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+ end
+end
-require_dependency "manifest/local/view/filer/body/file_header"
-require_dependency "manifest/local/view/filer/body/file_body"
-module Manifest
- module View
- module FilerModule
- class Body
- include BodyModule
- attr :filer,
- :file_header, :file_body
- def initialize filer
- @filer = filer
- @file_header = FileHeader.new self
- @file_body = FileBody.new self
+require_dependency "locmare/filer/body/file_body/file_item"
+module Locmare
+ module FilerModule
+ module BodyModule
+ class FileBody
+ include FileBodyModule
+ attr :body, :file_items
+ def initialize body
+ @body = body
+ @file_items = self.items.map {|item|
+ FileItem.new self, item
+ }
+ end
+
+ def filer
+ @body.filer
end
def manifest
- @filer.manifest
+ self.filer.manifest
end
def item_name
end
def template_dir
- @filer.template_dir
+ self.filer.template_dir
end
def template_file_name
- "body"
+ "file_body"
end
def template_name
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/symbol"
+require_dependency "locmare/filer/body/file_body/file_item/caption"
+require_dependency "locmare/filer/body/file_body/file_item/summary"
+require_dependency "locmare/filer/body/file_body/file_item/icon"
+require_dependency "locmare/filer/body/file_body/file_item/date"
+require_dependency "locmare/filer/body/file_body/file_item/edit"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ class FileItem
+ include FileItemModule
+
+ attr :file_body, :item,
+ :symbol, :caption, :summary, :icon, :date, :edit
+ def initialize file_body, item
+ @file_body = file_body
+ @item = item
+ @symbol = SymbolItemColumnFactory.factory self, self.filer.manifest.symbol, @item
+ @caption = CaptionItemColumnFactory.factory self, self.filer.manifest.caption, @item
+ @summary = SummaryItemColumnFactory.factory self, self.filer.manifest.summary, @item
+ @icon = IconItemColumnFactory.factory self, self.filer.manifest.icon, @item
+ @date = DateItemColumnFactory.factory self, self.filer.manifest.date, @item
+ @edit = EditItemColumnFactory.factory self, self.filer.manifest.edit, @item
+ end
+
+ def filer
+ @file_body.filer
+ end
+
+ def manifest
+ self.filer.manifest
+ end
+
+ def item_name
+ self.filer.item_name
+ end
+
+ def model
+ self.filer.model
+ end
+
+ def items
+ self.filer.items
+ end
+
+ def template_dir
+ self.filer.template_dir
+ end
+
+ def template_file_name
+ "file_item"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/caption/base"
+require_dependency "locmare/filer/body/file_body/file_item/caption/default"
+require_dependency "locmare/filer/body/file_body/file_item/caption/template"
+require_dependency "locmare/filer/body/file_body/file_item/caption/none"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ class CaptionItemColumnFactory
+ include CaptionItemColumnModule
+ @@types = {
+ 'default' => Default, 'template' => Template, 'none' => None
+ }
+ def self.factory file_item, my_manifest, item
+ type = my_manifest.type
+ raise "undefined type for local view filers > #{file_item.item_name} > caption > default > face\n" unless type
+ my_class = @@types[type]
+ raise "undefined class for local view filers > #{file_item.item_name} > caption > default > face > #{type}\n" unless my_class
+ my_class.new(file_item, my_manifest, item)
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module CaptionItemColumnModule
+ class Base
+ attr :file_item, :caption_manifest, :item, :column_name
+
+ def initialize file_item, caption_manifest, item
+ @file_item = file_item
+ @caption_manifest = caption_manifest
+ @item = item
+ @column_name = 'caption'
+ end
+
+ def filer
+ @file_item.filer
+ end
+
+ def manifest
+ self.filer.manifest
+ end
+
+ def item_name
+ self.filer.item_name
+ end
+
+ def column_template_dir
+ self.filer.template_dir + 'item_column/'
+ end
+
+ def column_template_file_name
+ raise "undefined column_template_file_name\n"
+ end
+
+ def column_template_name
+ self.column_template_dir + self.column_template_file_name
+ end
+
+ def item_template_dir
+ self.filer.template_dir + 'caption/'
+ end
+
+ def item_template_file_name
+ raise "undefined item_template_file_name\n"
+ end
+
+ def item_template_name
+ self.item_template_dir + self.item_template_file_name
+ end
+
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/caption/default/face"
+require_dependency "locmare/filer/body/file_body/file_item/caption/default/link"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module CaptionItemColumnModule
+ class Default < Base
+ include DefaultModule
+ attr :face, :link
+
+ def initialize file_item, caption_manifest, item
+ super
+ @face = FaceFactory.factory self, self.caption_manifest.face, @item
+ @link = LinkFactory.factory self, self.caption_manifest.link, @item
+ end
+
+ def column_template_file_name
+ 'show'
+ end
+
+ def item_template_file_name
+ if @caption_manifest.link.type == 'none'
+ 'default_without_link'
+ else
+ 'default'
+ end
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/caption/default/face/face"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module CaptionItemColumnModule
+ module DefaultModule
+ class FaceFactory
+ include FaceModule
+ @@types = {
+ 'column' => ColumnFace, 'method' => MethodFace, 'none' => NoneFace
+ }
+ def self.factory file_item, my_manifest, item
+ type = my_manifest.type
+ raise "undefined type for local view filers > #{file_item.item_name} > caption > face\n" unless type
+ my_class = @@types[type]
+ raise "undefined class for local view filers > #{file_item.item_name} > caption > face > #{type}\n" unless my_class
+ my_class.new(file_item, my_manifest, item)
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module CaptionItemColumnModule
+ module DefaultModule
+ module FaceModule
+ class BaseFace
+ attr :default_caption, :face_manifest, :item
+ def initialize default_caption, face_manifest, item
+ @default_caption = default_caption
+ @face_manifest = face_manifest
+ @item = item
+ end
+
+ def filer
+ @default_caption.filer
+ end
+
+ def manifest
+ self.filer.manifest
+ end
+
+ def item_name
+ self.filer.item_name
+ end
+
+ def template_dir
+ self.filer.template_dir + "caption_face/"
+ end
+
+ def template_file_name
+ raise "undefined template_file_name\n"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+
+ class ColumnFace < BaseFace
+ def template_file_name
+ if face.blank?
+ 'empty'
+ else
+ 'column'
+ end
+ end
+
+ def face
+ @item.attributes[@face_manifest.column_name]
+ end
+
+ end
+
+ class MethodFace < BaseFace
+ def template_file_name
+ if face.blank?
+ 'empty'
+ else
+ 'column'
+ end
+ end
+
+ def face
+ @item.__send__ @face_manifest.method_name
+ end
+
+ end
+
+ class NoneFace < BaseFace
+ def template_file_name
+ 'none'
+ end
+
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/caption/default/link/link"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module CaptionItemColumnModule
+ module DefaultModule
+ class LinkFactory
+ include LinkModule
+ @@types = {
+ 'action' => ActionLink, 'none' => NoneLink, 'url_column' => UrlColumnLink
+ }
+ def self.factory file_item, my_manifest, item
+ type = my_manifest.type
+ raise "undefined type for local view filers > #{file_item.item_name} > caption > link\n" unless type
+ my_class = @@types[type]
+ raise "undefined class for local view filers > #{file_item.item_name} > caption > link > #{type}\n" unless my_class
+ my_class.new(file_item, my_manifest, item)
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module CaptionItemColumnModule
+ module DefaultModule
+ module LinkModule
+ class BaseLink
+ attr :default_caption, :link_manifest, :item
+ def initialize default_caption, link_manifest, item
+ @default_caption = default_caption
+ @link_manifest = link_manifest
+ @item = item
+ end
+
+ def url
+ raise "undefined url\n"
+ end
+
+ end
+
+ class ActionLink < BaseLink
+
+ def url
+ @link_manifest.action_path + @item.id.to_s
+ end
+
+ end
+
+ class NoneLink < BaseLink
+
+ def url
+ nil
+ end
+
+ end
+
+ class UrlColumnLink < BaseLink
+
+ def url
+ @item.attributes[@link_manifest.column_name]
+ end
+
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module CaptionItemColumnModule
+ class None < Base
+
+ def column_template_file_name
+ 'none'
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module CaptionItemColumnModule
+ class Template < Base
+ def template_file_name
+ @caption_manifest.template_name
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/date/date"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ class DateItemColumnFactory
+ include DateItemColumnModule
+ @@types = {
+ 'default' => Default, 'none' => None
+ }
+ def self.factory file_item, my_manifest, item
+ type = my_manifest.type
+ raise "undefined type for local view filers > #{file_item.item_name} > date\n" unless type
+ my_class = @@types[type]
+ raise "undefined class for local view filers > #{file_item.item_name} > date > #{type}\n" unless my_class
+ my_class.new(file_item, my_manifest, item)
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module DateItemColumnModule
+ class Base
+ attr :file_item, :date_manifest, :item, :column_name
+
+ def initialize file_item, date_manifest, item
+ @file_item = file_item
+ @date_manifest = date_manifest
+ @item = item
+ @column_name = 'date'
+ end
+
+ def filer
+ @file_item.filer
+ end
+
+ def manifest
+ self.filer.manifest
+ end
+
+ def item_name
+ self.filer.item_name
+ end
+
+ def column_template_dir
+ self.filer.template_dir + 'item_column/'
+ end
+
+ def column_template_file_name
+ raise "undefined column_template_file_name\n"
+ end
+
+ def column_template_name
+ self.column_template_dir + self.column_template_file_name
+ end
+
+ def item_template_dir
+ self.filer.template_dir + 'date/'
+ end
+
+ def item_template_file_name
+ raise "undefined item_template_file_name\n"
+ end
+
+ def item_template_name
+ self.item_template_dir + self.item_template_file_name
+ end
+
+ end
+
+ class Default < Base
+ def column_template_file_name
+ 'show'
+ end
+
+ def item_template_file_name
+ 'default'
+ end
+
+ end
+
+ class None < Base
+ def column_template_file_name
+ 'none'
+ end
+
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/edit/edit"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ class EditItemColumnFactory
+ include EditItemColumnModule
+ @@types = {
+ 'default' => Default, 'none' => None, 'account' => Account, 'template' => Template
+ }
+ def self.factory file_item, my_manifest, item
+ type = my_manifest.type
+ raise "undefined type for local view filers > #{file_item.item_name} > edit\n" unless type
+ my_class = @@types[type]
+ raise "undefined class for local view filers > #{file_item.item_name} > edit > #{type}\n" unless my_class
+ my_class.new(file_item, my_manifest, item)
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module EditItemColumnModule
+ class Base
+ attr :file_item, :edit_manifest, :item, :column_name
+
+ def initialize file_item, edit_manifest, item
+ @file_item = file_item
+ @edit_manifest = edit_manifest
+ @item = item
+ @column_name = 'edit'
+ end
+
+ def filer
+ @file_item.filer
+ end
+
+ def manifest
+ self.filer.manifest
+ end
+
+ def item_name
+ self.filer.item_name
+ end
+
+ def image_dir
+ self.filer.image_dir
+ end
+
+ def column_template_dir
+ self.filer.template_dir + 'item_column/'
+ end
+
+ def column_template_file_name
+ raise "undefined column_template_file_name\n"
+ end
+
+ def column_template_name
+ self.column_template_dir + self.column_template_file_name
+ end
+
+ def item_template_dir
+ self.filer.template_dir + 'edit/'
+ end
+
+ def item_template_file_name
+ raise "undefined item_template_file_name\n"
+ end
+
+ def item_template_name
+ self.item_template_dir + self.item_template_file_name
+ end
+
+ end
+
+ class Default < Base
+ def column_template_file_name
+ 'show'
+ end
+
+ def item_template_file_name
+ if @item.own? self.filer.operators
+ 'default'
+ else
+ 'none'
+ end
+ end
+
+ def edit_img_file_name
+ self.image_dir + 'edit.png'
+ end
+
+ def remove_img_file_name
+ self.image_dir + 'remove.png'
+ end
+
+ def img_opt
+ {:width => Manifest.manifest.magic_numbers['thumbnail_width'] / 2,
+ :height => Manifest.manifest.magic_numbers['thumbnail_height'] / 2}
+ end
+
+ def edit_img_opt
+ img_opt.merge :src => self.edit_img_file_name
+ end
+
+ def remove_img_opt
+ img_opt.merge :src => self.remove_img_file_name
+ end
+
+ end
+
+ class None < Base
+ def column_template_file_name
+ 'none'
+ end
+
+ end
+
+ class Account < Base
+ def column_template_file_name
+ 'show'
+ end
+
+ def item_template_file_name
+ if @item.own? self.filer.operators
+ 'account'
+ else
+ 'none'
+ end
+ end
+
+ def edit_img_file_name
+ self.image_dir + 'edit.png'
+ end
+
+ def img_opt
+ {:width => Manifest.manifest.magic_numbers['thumbnail_width'] / 2,
+ :height => Manifest.manifest.magic_numbers['thumbnail_height'] / 2}
+ end
+
+ def edit_img_opt
+ img_opt.merge :src => self.edit_img_file_name
+ end
+
+ end
+
+ class Template < Base
+ def column_template_file_name
+ 'show'
+ end
+
+ def item_template_file_name
+ 'template'
+ end
+
+ def template_dir
+ @item.path_name + '/'
+ end
+
+ def template_file_name
+ @edit_manifest.template_name
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/icon/icon"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ class IconItemColumnFactory
+ include IconItemColumnModule
+ @@types = {
+ 'default' => Default, 'none' => None
+ }
+ def self.factory file_item, my_manifest, item
+ type = my_manifest.type
+ raise "undefined type for local view filers > #{file_item.item_name} > icon\n" unless type
+ my_class = @@types[type]
+ raise "undefined class for local view filers > #{file_item.item_name} > icon > #{type}\n" unless my_class
+ my_class.new(file_item, my_manifest, item)
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module IconItemColumnModule
+ class Base
+ attr :file_item, :icon_manifest, :item, :column_name
+
+ def initialize file_item, icon_manifest, item
+ @file_item = file_item
+ @icon_manifest = icon_manifest
+ @item = item
+ @column_name = 'icon'
+ end
+
+ def filer
+ @file_item.filer
+ end
+
+ def manifest
+ self.filer.manifest
+ end
+
+ def item_name
+ self.filer.item_name
+ end
+
+ def column_template_dir
+ self.filer.template_dir + 'item_column/'
+ end
+
+ def column_template_file_name
+ raise "undefined column_template_file_name\n"
+ end
+
+ def column_template_name
+ self.column_template_dir + self.column_template_file_name
+ end
+
+ def item_template_dir
+ self.filer.template_dir + 'icon/'
+ end
+
+ def item_template_file_name
+ raise "undefined item_template_file_name\n"
+ end
+
+ def item_template_name
+ self.item_template_dir + self.item_template_file_name
+ end
+
+ end
+
+ class Default < Base
+ def column_template_file_name
+ 'show'
+ end
+
+ def item_template_file_name
+ 'default'
+ end
+
+ def icon_file_name
+ '/images/prof.png'
+ end
+
+ def icon_size
+ Manifest.manifest.magic_numbers['thumbnail_width']
+ end
+
+ end
+
+ class None < Base
+ def column_template_file_name
+ 'none'
+ end
+
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/summary/summary"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ class SummaryItemColumnFactory
+ include SummaryItemColumnModule
+ @@types = {
+ 'none' => None, 'template' => Template
+ }
+ def self.factory file_item, my_manifest, item
+ type = my_manifest.type
+ raise "undefined type for local view filers > #{file_item.item_name} > summary\n" unless type
+ my_class = @@types[type]
+ raise "undefined class for local view filers > #{file_item.item_name} > summary > #{type}\n" unless my_class
+ my_class.new(file_item, my_manifest, item)
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module SummaryItemColumnModule
+ class Base
+ attr :file_item, :summary_manifest, :item, :column_name
+
+ def initialize file_item, summary_manifest, item
+ @file_item = file_item
+ @summary_manifest = summary_manifest
+ @item = item
+ @column_name = 'summary'
+ end
+
+ def filer
+ @file_item.filer
+ end
+
+ def manifest
+ self.filer.manifest
+ end
+
+ def item_name
+ self.filer.item_name
+ end
+
+ def column_template_dir
+ self.filer.template_dir + 'item_column/'
+ end
+
+ def column_template_file_name
+ raise "undefined column_template_file_name\n"
+ end
+
+ def column_template_name
+ self.column_template_dir + self.column_template_file_name
+ end
+
+ def item_template_dir
+ self.filer.template_dir + 'summary/'
+ end
+
+ def item_template_file_name
+ raise "undefined item_template_file_name\n"
+ end
+
+ def item_template_name
+ self.item_template_dir + self.item_template_file_name
+ end
+
+ end
+
+ class None < Base
+ def column_template_file_name
+ "none"
+ end
+
+ end
+
+ class Template < Base
+ def column_template_file_name
+ 'show'
+ end
+
+ def item_template_file_name
+ 'template'
+ end
+
+ def template_dir
+ @item.path_name + '/'
+ end
+
+ def template_file_name
+ @summary_manifest.template_name
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/symbol/base"
+require_dependency "locmare/filer/body/file_body/file_item/symbol/default"
+require_dependency "locmare/filer/body/file_body/file_item/symbol/template"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ class SymbolItemColumnFactory
+ include SymbolItemColumnModule
+ @@types = {
+ 'default' => Default, 'template' => Template
+ }
+ def self.factory file_item, my_manifest, item
+ type = my_manifest.type
+ raise "undefined type for local view filers > #{file_item.item_name} > symbol\n" unless type
+ my_class = @@types[type]
+ raise "undefined class for local view filers > #{file_item.item_name} > symbol > #{type}\n" unless my_class
+ my_class.new(file_item, my_manifest, item)
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module SymbolItemColumnModule
+ class Base
+ attr :file_item, :symbol_manifest, :item, :column_name
+
+ def initialize file_item, symbol_manifest, item
+ @file_item = file_item
+ @symbol_manifest = symbol_manifest
+ @item = item
+ @column_name = 'symbol'
+ end
+
+ def filer
+ @file_item.filer
+ end
+
+ def manifest
+ self.filer.manifest
+ end
+
+ def item_name
+ self.filer.item_name
+ end
+
+ def column_template_dir
+ self.filer.template_dir + 'item_column/'
+ end
+
+ def column_template_file_name
+ raise "undefined column_template_file_name\n"
+ end
+
+ def column_template_name
+ self.column_template_dir + self.column_template_file_name
+ end
+
+ def item_template_dir
+ self.filer.template_dir + 'symbol/'
+ end
+
+ def item_template_file_name
+ raise "undefined item_template_file_name\n"
+ end
+
+ def item_template_name
+ self.item_template_dir + self.item_template_file_name
+ end
+
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/symbol/default/face"
+require_dependency "locmare/filer/body/file_body/file_item/symbol/default/link"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module SymbolItemColumnModule
+ class Default < Base
+ include DefaultModule
+ attr :face, :link
+
+ def initialize file_item, symbol_manifest, item
+ super
+ @face = FaceFactory.factory self, self.symbol_manifest.face, @item
+ @link = LinkFactory.factory self, self.symbol_manifest.link, @item
+ end
+
+ def column_template_file_name
+ 'show'
+ end
+
+ def item_template_file_name
+ if @symbol_manifest.link.type == 'none'
+ 'default_without_link'
+ else
+ 'default'
+ end
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/symbol/default/face/face"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module SymbolItemColumnModule
+ module DefaultModule
+ class FaceFactory
+ include FaceModule
+ @@types = {
+ 'image' => ImageFace, 'picture' => PictureFace
+ }
+ def self.factory file_item, my_manifest, item
+ type = my_manifest.type
+ raise "undefined type for local view filers > #{file_item.item_name} > symbol > face\n" unless type
+ my_class = @@types[type]
+ raise "undefined class for local view filers > #{file_item.item_name} > symbol > face > #{type}\n" unless my_class
+ my_class.new(file_item, my_manifest, item)
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module SymbolItemColumnModule
+ module DefaultModule
+ module FaceModule
+ class BaseFace
+ attr :default_symbol, :face_manifest, :item
+ def initialize default_symbol, face_manifest, item
+ @default_symbol = default_symbol
+ @face_manifest = face_manifest
+ @item = item
+ end
+
+ def filer
+ @default_symbol.filer
+ end
+
+ def manifest
+ self.filer.manifest
+ end
+
+ def item_name
+ self.filer.item_name
+ end
+
+ def template_dir
+ self.filer.template_dir + "symbol_face/"
+ end
+
+ def template_file_name
+ raise "undefined template_file_name\n"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+
+ class ImageFace < BaseFace
+ def template_file_name
+ 'image'
+ end
+
+ def url
+ @face_manifest.url
+ end
+
+ def tag_opt
+ {:src => self.url, :width => Manifest.manifest.magic_numbers['thumbnail_width'], :height => Manifest.manifest.magic_numbers['thumbnail_height']}
+ end
+
+ end
+
+ class PictureFace < BaseFace
+ def template_file_name
+ 'picture'
+ end
+
+ def method_name
+ @face_manifest.method_name
+ end
+
+ def tag_opt
+ if @item.methods(true).include?(self.method_name.to_sym)
+ @item.__send__ self.method_name
+ else
+ {:src => '/images/error.png', :width => Manifest.manifest.magic_numbers['thumbnail_width'], :height => Manifest.manifest.magic_numbers['thumbnail_height']}
+ end
+ end
+
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_body/file_item/symbol/default/link/link"
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module SymbolItemColumnModule
+ module DefaultModule
+ class LinkFactory
+ include LinkModule
+ @@types = {
+ 'action' => ActionLink, 'none' => NoneLink, 'url_column' => UrlColumnLink
+ }
+ def self.factory file_item, my_manifest, item
+ type = my_manifest.type
+ raise "undefined type for local view filers > #{file_item.item_name} > symbol > link\n" unless type
+ my_class = @@types[type]
+ raise "undefined class for local view filers > #{file_item.item_name} > symbol > link > #{type}\n" unless my_class
+ my_class.new(file_item, my_manifest, item)
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module SymbolItemColumnModule
+ module DefaultModule
+ module LinkModule
+ class BaseLink
+ attr :default_symbol, :link_manifest, :item
+ def initialize default_symbol, link_manifest, item
+ @default_symbol = default_symbol
+ @link_manifest = link_manifest
+ @item = item
+ end
+
+ def url
+ raise "undefined url\n"
+ end
+
+ end
+
+ class ActionLink < BaseLink
+
+ def url
+ @link_manifest.action_path + @item.id.to_s
+ end
+ end
+
+ class NoneLink < BaseLink
+
+ def url
+ nil
+ end
+
+ end
+
+ class UrlColumnLink < BaseLink
+
+ def url
+ @item.attributes[@link_manifest.column_name]
+ end
+
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileBodyModule
+ module FileItemModule
+ module SymbolItemColumnModule
+ class Template < Base
+ def column_template_file_name
+ 'show'
+ end
+
+ def item_template_file_name
+ 'template'
+ end
+
+ def template_dir
+ @item.path_name + '/'
+ end
+
+ def template_file_name
+ @symbol_manifest.template_name
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/filer/body/file_header/base"
+require_dependency "locmare/filer/body/file_header/show"
+require_dependency "locmare/filer/body/file_header/none"
+module Locmare
+ module FilerModule
+ module BodyModule
+ class FileHeader
+ include FileHeaderModule
+
+ attr :body,
+ :symbol, :caption, :summary, :icon, :date, :edit
+ def initialize body
+ @body = body
+ c = self.filer.manifest.symbol.visible? ? Show : None
+ @symbol = c.new self, 'symbol'
+ c = self.filer.manifest.caption.visible? ? Show : None
+ @caption = c.new self, 'caption'
+ c = self.filer.manifest.summary.visible? ? Show : None
+ @summary = c.new self, 'summary'
+ c = self.filer.manifest.icon.visible? ? Show : None
+ @icon = c.new self, 'icon'
+ c = self.filer.manifest.date.visible? ? Show : None
+ @date = c.new self, 'date'
+ c = self.filer.manifest.edit.visible? ? Show : None
+ @edit = c.new self, 'edit'
+ end
+
+ def filer
+ @body.filer
+ end
+
+ def manifest
+ self.filer.manifest
+ end
+
+ def item_name
+ self.filer.item_name
+ end
+
+ def model
+ self.filer.model
+ end
+
+ def items
+ self.filer.items
+ end
+
+ def template_dir
+ @body.template_dir
+ end
+
+ def template_file_name
+ "file_header"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+ end
+ end
+end
-require_dependency "manifest/local/view/filer/body/file_body/file_item"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- class FileBody
- include FileBodyModule
- attr :body, :file_items
- def initialize body
- @body = body
- @file_items = self.items.map {|item|
- FileItem.new self, item
- }
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileHeaderModule
+ class Base
+ attr :file_header, :column_name
+ def initialize file_header, column_name
+ @file_header = file_header
+ @column_name = column_name
end
def filer
- @body.filer
+ @file_header.filer
end
def manifest
end
def template_dir
- self.filer.template_dir
+ self.filer.template_dir + 'header_column/'
end
def template_file_name
- "file_body"
+ "show"
end
def template_name
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileHeaderModule
+ class None < Base
+ def template_file_name
+ "none"
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ module BodyModule
+ module FileHeaderModule
+ class Show < Base
+ def template_file_name
+ "show"
+ end
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ class Footer
+ attr :filer, :paginate
+ def initialize filer, paginate
+ @filer = filer
+ @paginate = paginate
+ end
+
+ def template_dir
+ @filer.template_dir
+ end
+
+ def template_file_name
+ "footer"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FilerModule
+ class Header
+ attr :filer
+ def initialize filer
+ @filer = filer
+ end
+
+ def model
+ @filer.model
+ end
+
+ def icon_name
+ self.model.singular
+ end
+
+ def icon_size
+ Manifest.manifest.magic_numbers['thumbnail_width'] / 2
+ end
+
+ def human_name
+ self.model.model_name.human
+ end
+
+ def template_dir
+ @filer.template_dir
+ end
+
+ def template_file_name
+ "header"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/form/field"
+module Locmare
+ class Form
+ include FormModule
+ attr :form_name, :item, :mounted, :submit, :operators, :template_dir,
+ :fields
+ def initialize form_name, item, mounted, submit, operators
+ @form_name = form_name
+ @item = item
+ @mounted = mounted
+ @submit = submit
+ @operators = operators
+ @manifest = LocalManifest.manifest.forms[@form_name]
+ @template_dir = 'templates/r/form/'
+ @fields = {}
+ @manifest.each_field do |field_name, field_manifest|
+ @fields[field_name] = Field.new self, field_name, field_manifest
+ end
+ end
+
+ def each_field
+ @manifest.each_field do |field_name, field_manifest|
+ 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 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
+
+ def fields_template_name
+ self.template_dir + 'fields'
+ end
+
+ def image_dir
+ '/images/'
+ end
+
+ end
+end
+
--- /dev/null
+require_dependency "locmare/form/field/label"
+require_dependency "locmare/form/field/tag"
+require_dependency "locmare/form/field/helper"
+module Locmare
+ module FormModule
+ class Field
+ include FieldModule
+ 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.model_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
+ @field_manifest.form_field_name
+ end
+
+ def form_name
+ @form.form_name
+ end
+
+ def template_dir
+ @form.template_dir + 'field/'
+ end
+
+ def template_file_name
+ @field_manifest.type
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ 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
+require_dependency "locmare/form/field/helper/base"
+require_dependency "locmare/form/field/helper/size"
+require_dependency "locmare/form/field/helper/tail_angle"
+require_dependency "locmare/form/field/helper/color"
+require_dependency "locmare/form/field/helper/popup"
+module Locmare
+ module FormModule
+ module FieldModule
+ class HelperFactory
+ include HelperModule
+ @@types = {
+ 'size' => Size, 'tail_angle' => TailAngle, 'color' => Color,
+ 'popup' => Popup
+ }
+ def self.factory field, my_manifest
+ type = my_manifest.type
+ my_class = @@types[type]
+ raise "undefined class for local view forms > #{field.form_name} > fields > #{field.field_name} > helper > #{type}\n" unless my_class
+ my_class.new(field, my_manifest)
+ end
+
+ end
+
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module HelperModule
+ class Base
+ attr :field, :helper_manifest
+
+ def initialize field, helper_manifest
+ @field = field
+ @helper_manifest = helper_manifest
+ end
+
+ def type
+ @helper_manifest.type
+ end
+
+ def path
+ @helper_manifest.path
+ end
+
+ def form
+ @field.form
+ end
+
+ def template_dir
+ self.form.template_dir + 'helper/'
+ end
+
+ def template_file_name
+ @helper_manifest.file_name
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ def form_name
+ @field.form_name
+ end
+
+ def field_name
+ @field.field_name
+ end
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module HelperModule
+ class Color < Base
+ def wrapper
+ @helper_manifest.wrapper
+ end
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module HelperModule
+ class Popup < Base
+ attr :source
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module HelperModule
+ class Size < Base
+
+ def dom_class
+ @helper_manifest.dom_class
+ end
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module HelperModule
+ class TailAngle < Base
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/form/field/label/label"\r
+module Locmare\r
+ module FormModule\r
+ module FieldModule\r
+ class LabelFactory\r
+ include LabelModule\r
+ @@types = {\r
+ 'default' => Default, 'none' => None\r
+ }\r
+ def self.factory field, my_manifest\r
+ type = my_manifest.type\r
+ my_class = @@types[type]\r
+ raise "undefined class for local view forms > #{field.form_name} > fields > #{field.field_name} > label > #{type}\n" unless my_class\r
+ my_class.new(field, my_manifest)\r
+ end\r
+ \r
+ end\r
+ \r
+ end\r
+ end\r
+end\r
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module LabelModule
+ class Base
+ attr :field, :label_manifest
+
+ def initialize field, label_manifest
+ @field = field
+ @label_manifest = label_manifest
+ end
+
+ def form
+ @field.form
+ end
+
+ def manifest
+ self.form.manifest
+ end
+
+ def form_name
+ self.form.form_name
+ end
+
+ def model
+ self.form.model
+ end
+
+ def item
+ self.form.item
+ end
+
+ def model_name
+ @label_manifest.model_name
+ end
+
+ def column_name
+ @label_manifest.column_name
+ end
+
+ def template_dir
+ self.form.template_dir + 'label/'
+ end
+
+ def template_file_name
+ raise "undefined template_file_name\n"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ def label_row_break_template_dir
+ self.form.template_dir + 'label_row_break/'
+ end
+
+ def label_row_break_template_file_name
+ if @label_manifest.row_break
+ 'br'
+ else
+ 'no_break'
+ end
+ end
+
+ def label_row_break_template_name
+ self.label_row_break_template_dir + self.label_row_break_template_file_name
+ end
+
+ end
+
+ class Default < Base
+ def template_file_name
+ 'default'
+ end
+
+ def label_name
+ 'activerecord.attributes.' + self.model_name + '.' + self.column_name
+ end
+
+ end
+
+ class None < Base
+ def template_file_name
+ 'none'
+ end
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/form/field/tag/base"\r
+require_dependency "locmare/form/field/tag/text"\r
+require_dependency "locmare/form/field/tag/number"\r
+require_dependency "locmare/form/field/tag/text_area"\r
+require_dependency "locmare/form/field/tag/select"\r
+require_dependency "locmare/form/field/tag/hidden"\r
+module Locmare\r
+ module FormModule\r
+ module FieldModule\r
+ class TagFactory\r
+ include TagModule\r
+ @@types = {\r
+ 'text' => TextTag, 'number' => NumberTag, 'text_area' => TextAreaTag, \r
+ 'select' => SelectTag, 'hidden' => HiddenTag\r
+ }\r
+ def self.factory field, my_manifest\r
+ type = my_manifest.type\r
+ my_class = @@types[type]\r
+ raise "undefined class for local view forms > #{field.form_name} > fields > #{field.field_name} > tag > #{type}\n" unless my_class\r
+ my_class.new(field, my_manifest)\r
+ end\r
+ \r
+ end\r
+ \r
+ end\r
+ end\r
+end\r
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module TagModule
+ class Base
+ attr :field, :tag_manifest
+
+ def initialize field, tag_manifest
+ @field = field
+ @tag_manifest = tag_manifest
+ end
+
+ def form_field_name
+ @field.form_field_name
+ end
+
+ def value
+ @field.value
+ end
+
+ def options
+ @field.options @tag_manifest.options
+ end
+
+ def form
+ @field.form
+ end
+
+ def manifest
+ self.form.manifest
+ end
+
+ def form_name
+ self.form.form_name
+ end
+
+ def model
+ self.form.model
+ end
+
+ def item
+ self.form.item
+ end
+
+ def model_name
+ @label_manifest.model_name
+ end
+
+ def column_name
+ @label_manifest.column_name
+ end
+
+ def template_dir
+ self.form.template_dir + 'tag/'
+ end
+
+ def template_file_name
+ raise "undefined template_file_name\n"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module TagModule
+ class HiddenTag < Base
+ def template_file_name
+ 'hidden'
+ end
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module TagModule
+ class NumberTag < Base
+ def template_file_name
+ 'number'
+ end
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module TagModule
+ class SelectTag < Base
+ def template_file_name
+ 'select'
+ end
+
+ def select_item_name
+ model = ::Manifest.manifest.models[@field.field_manifest.model_name]
+ attr = model.attributes[@field.field_manifest.column_name]
+ attr.source.select_item_name
+ end
+
+ def items
+ ::Manifest.manifest.system_resources.select_items[self.select_item_name]
+ end
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module TagModule
+ class TextTag < Base
+ def template_file_name
+ 'text'
+ end
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module FormModule
+ module FieldModule
+ module TagModule
+ class TextAreaTag < Base
+ def template_file_name
+ 'text_area'
+ end
+
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+require_dependency "locmare/list_group/list/base"
+require_dependency "locmare/list_group/list/public"
+require_dependency "locmare/list_group/list/private"
+require_dependency "locmare/list_group/list/system_resource"
+require_dependency "locmare/list_group/list/filter"
+require_dependency "locmare/list_group/list/through_filter"
+require_dependency "locmare/list_group/list/foreign_filter"
+require_dependency "locmare/list_group/list/play"
+module Locmare
+ class ListGroup
+ include ListGroupModule
+
+ def self.types
+ {
+ 'public' => PublicList, 'private' => PrivateList, 'system_resource' => SystemResourceList,
+ 'filter' => FilterList, 'through_filter' => ThroughFilterList, 'foreign_filter' => ForeignFilterList,
+ 'play' => PlayList
+ }
+ end
+
+ def self.list item_name, list_name
+ list_group_manifest = LocalManifest.manifest.list_groups[item_name]
+ list_manifest = list_group_manifest.lists[list_name]
+ self.types[list_manifest.type].new item_name, list_name
+ end
+
+ end
+end
+
--- /dev/null
+module Locmare
+ module ListGroupModule
+ class Base
+ class ListResult
+ attr :items, :paginate
+ def initialize items, paginate
+ @items = items
+ @paginate = paginate
+ end
+
+ end
+
+ attr :item_name, :list_name,
+ :model_manifest, :model_list_manifest, :model,
+ :default_page_size, :max_page_size
+ def initialize item_name, list_name
+ @item_name = item_name
+ @list_name = list_name
+ self.init
+ end
+
+ def init
+ @list_group_manifest = LocalManifest.manifest.list_groups[@item_name]
+ @list_manifest = @list_group_manifest.lists[@list_name]
+ @where = @list_manifest.where
+ @includes = @list_manifest.includes
+ @model_manifest = ::Manifest.manifest.models[@item_name]
+ @model_list_manifest = @model_manifest.list
+ @model = ::Manifest.item_name_to_model @item_name
+ @table_name = @model.table_name
+ end
+
+ def model_name
+ @model.model_name
+ end
+
+ def model_manifest
+ @model.model_manifest
+ end
+
+ def page_number prm = nil
+ page = prm.to_i
+ page = 1 if page < 1
+ page
+ end
+
+ def page_size prm
+ page_size = prm.to_i
+ page_size = self.max_page_size if page_size > self.max_page_size
+ page_size = self.default_page_size if page_size < 1
+ page_size
+ end
+
+ def default_page_size
+ @model_list_manifest.default_page_size
+ end
+
+ def max_page_size
+ @model_list_manifest.max_page_size
+ end
+
+ def base_where_condition
+ method_name = @where.conditions do |name|
+ name
+ end
+ @model.__send__ method_name
+ end
+
+ def where_condition
+ base_where_condition
+ end
+
+ def include_hash
+ @includes.includes
+ end
+
+ def order
+ @model.list_order
+ end
+
+ def items operators, options, offset, page_size
+ @model.where(self.where_condition).includes(self.include_hash).order(self.order).offset(offset).limit(page_size)
+ end
+
+ def count operators, options
+ @model.where(self.where_condition).includes(self.include_hash).count
+ end
+
+ def paginate count, offset, page_size
+ c = count ? count.to_i : 0
+ Kaminari.paginate_array(Array.new(c, nil)).page(offset).per(page_size)
+ end
+
+ def open operators, options
+ page = self.page_number(options[:page])
+ page_size = self.page_size options[:page_size]
+ offset = (page -1) * page_size
+ items = self.items operators, options, offset, page_size
+ count = self.count operators, options
+ pg = self.paginate count, offset, page_size
+ ListResult.new items, pg
+ end
+
+ end
+
+ end
+end
--- /dev/null
+module Locmare
+ module ListGroupModule
+ class FilterList < Base
+ attr :filter_key, :filter_item_name
+
+ def init
+ super
+ @filter_key = @list_manifest.filter_key
+ @filter_item_name = @list_manifest.filter_item_name
+ end
+
+ def where_condition filter_item_id
+ w = self.base_where_condition
+ w += ' and ' unless w.blank?
+ [w + @table_name + '.' + @filter_key + ' = ?', filter_item_id]
+ end
+
+ def include_hash
+ w = super
+ w.merge!({@filter_item_name => {} }) unless w[@filter_item_name]
+ w
+ end
+
+ def items operators, options, offset, page_size
+ filter_item_id = options[:id]
+ @model.where(self.where_condition(filter_item_id)).includes(self.include_hash).order(self.order).offset(offset).limit(page_size)
+ end
+
+ def count operators, options
+ filter_item_id = options[:id]
+ @model.where(self.where_condition(filter_item_id)).includes(self.include_hash).count
+ end
+
+ end
+
+ end
+end
--- /dev/null
+module Locmare
+ module ListGroupModule
+ class ForeignFilterList < FilterList
+
+ def init
+ super
+ @filter_table_name = ::Manifest.manifest.models[@filter_item_name].classify.table_name
+ @tree_name = @list_manifest.tree_name
+ end
+
+ def where_condition filter_item_id
+ w = self.base_where_condition
+ w += ' and ' unless w.blank?
+ [w + @filter_table_name + '.id' + ' = ?', filter_item_id]
+ end
+
+ def include_hash
+ @model_manifest.tree[@tree_name].include_hash
+ end
+
+ end
+
+ end
+end
--- /dev/null
+module Locmare
+ module ListGroupModule
+ class PlayList
+ attr :model, :list_name, :list_manifest, :type,
+ :default_page_size, :max_page_size
+
+ def initialize model, list_name, list_manifest
+ @model = model
+ @list_name = list_name
+ @list_manifest = list_manifest
+ self.set_default
+ self.init
+ end
+
+ def set_default
+ @list_manifest['args'] ||= {}
+ return
+ @default_page_size = @conf['default_page_size'] || 25
+ @max_page_size = @conf['max_page_size'] || 100
+ @params_offset = params_offset
+ @params_count = params_count
+ @list_list_conf = @manifest.list(@item_name).lists[list_name] || {}
+ @model_name = @list_list_conf['model']
+ @filter_key = @list_list_conf['filter_key']
+ @model = @model_name.classify.constantize
+ @table_name = @model.table_name
+ if @model.content?
+ @owner_model = @model.owner_model
+ @owner_table_name = @owner_model.table_name if @owner_model
+ end
+ end
+
+ def init
+ @type = @list_manifest['type']
+ @args = @list_manifest['args']
+ end
+
+ end
+
+ end
+end
--- /dev/null
+module Locmare
+ module ListGroupModule
+ class PrivateList < Base
+
+ def init
+ super
+ end
+
+ def where_condition operators
+ case @model.owner_type
+ when :author
+ operator = operators.author
+ when :artist
+ operator = operators.artist
+ end
+ t = if @owner_model
+ if @owner_model.owner_model
+ @owner_model.owner_model.table_name
+ else
+ @owner_model.table_name
+ end
+ else
+ @table_name
+ end
+ @where.conditions do |name|
+ [t + '.' + @model.owner_type.to_s + '_id = ?', operator.id]
+ end
+ end
+
+ def items operators, options, offset, page_size
+ @model.where(self.where_condition(operators)).includes(self.include_hash).order(self.order).offset(offset).limit(page_size)
+ end
+
+ def count operators, options
+ filter_item_id = options[:id]
+ @model.where(self.where_condition(operators)).includes(self.include_hash).count
+ end
+
+ end
+
+ end
+end
--- /dev/null
+module Locmare
+ module ListGroupModule
+ class PublicList < Base
+
+ def init
+ super
+ end
+
+ def order
+ @model.list_order
+ end
+
+ end
+
+ end
+end
--- /dev/null
+module Locmare
+ module ListGroupModule
+ class SystemResourceList < Base
+
+ def init
+ super
+ end
+
+ def items operators, options, offset, page_size
+ # enable_list does not work when configured auto load in development.rb
+ # auto loader undefing MODEL at reload manifest file
+ # @model.enable_list
+ super
+ end
+
+ end
+
+ end
+end
--- /dev/null
+module Locmare
+ module ListGroupModule
+ class ThroughFilterList < FilterList
+ attr :through
+
+ def init
+ super
+ @through = @list_manifest.through
+ @filter_table_name = ::Manifest.manifest.models[@filter_item_name].classify.table_name
+ end
+
+ def include_hash
+ {@through => {@filter_item_name => {}} }
+ end
+
+ def where_condition filter_item_id
+ w = self.base_where_condition
+ w += ' and ' unless w.blank?
+ [w + @filter_table_name + '.id' + ' = ?', filter_item_id]
+ end
+
+ end
+
+ end
+end
--- /dev/null
+require_dependency "locmare/filer"
+require_dependency "locmare/form"
+require_dependency "locmare/profiler"
+require_dependency "locmare/list_group"
--- /dev/null
+require_dependency "locmare/profiler/header"
+require_dependency "locmare/profiler/column"
+require_dependency "locmare/profiler/association"
+module Locmare
+ class Profiler
+ include ProfilerModule
+ attr :profiler_manifest, :item_name, :item, :operators, :template_dir,
+ :header, :columns, :associations
+ def initialize item_name, item, operators
+ @item_name = item_name
+ @item = item
+ @operators = operators
+ @profiler_manifest = LocalManifest.manifest.profilers[@item_name]
+ @template_dir = 'templates/r/profiler/'
+ @header = Header.new self
+ @columns = @profiler_manifest.column_names.map {|column_name|
+ Column.new self, column_name
+ }
+ @associations = Association.new self, @profiler_manifest.associations
+ end
+
+ def model
+ ::Manifest::item_name_to_model @item_name
+ end
+
+ def template_file_name
+ "profiler"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ def header_template_file_name
+ "header"
+ end
+
+ def header_template_name
+ self.template_dir + self.header_template_file_name
+ end
+
+ def columns_template_file_name
+ "columns"
+ end
+
+ def columns_template_name
+ self.template_dir + self.columns_template_file_name
+ end
+
+ def associations_template_file_name
+ "associations"
+ end
+
+ def associations_template_name
+ self.template_dir + self.associations_template_file_name
+ end
+
+ def image_dir
+ '/images/'
+ end
+
+ end
+end
+
--- /dev/null
+require_dependency "locmare/profiler/association/belongs_to"
+require_dependency "locmare/profiler/association/has_many"
+require_dependency "locmare/profiler/association/has_one"
+module Locmare
+ module ProfilerModule
+ class Association
+ include AssociationModule
+ attr :profiler, :association_manifest,
+ :belongs_to, :has_many, :has_one
+ def initialize profiler, association_manifest
+ @profiler = profiler
+ @association_manifest = association_manifest
+ @belongs_to = @association_manifest.belongs_to.map {|belongs_to_manifest|
+ BelongsTo.new self, belongs_to_manifest
+ }
+ @has_many = @association_manifest.has_many.map {|list_name|
+ HasMany.new self, list_name
+ }
+ @has_one = @association_manifest.has_one.map {|list_name|
+ HasOne.new self, list_name
+ }
+ end
+
+ def item
+ @profiler.item
+ end
+
+ def model_manifest
+ ::Manifest.manifest.models[@profiler.item_name]
+ end
+
+ def model_attribute_manifest
+ model_manifest.attributes[@column_name]
+ end
+
+ def template_dir
+ @profiler.template_dir
+ end
+
+ def template_file_name
+ "associations"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ def each_belongs_to_filer
+ @belongs_to.each {|b|
+ yield b.filer
+ }
+ end
+
+ def each_has_many_filer
+ @has_many.each {|h|
+ yield h.filer
+ }
+ end
+
+ def each_has_one_filer
+ @has_one.each {|h|
+ yield h.filer
+ }
+ end
+
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module ProfilerModule
+ module AssociationModule
+ class BelongsTo
+ attr :association, :belongs_to_manifest
+ def initialize association, belongs_to_manifest
+ @association = association
+ @belongs_to_manifest = belongs_to_manifest
+ end
+
+ def item
+ self.profiler.item
+ end
+
+ def parent_model
+ @belongs_to_manifest.model
+ end
+
+ def parent_id
+ self.item.attributes[self.model_belongs_to_manifest.id_column]
+ end
+
+ def filer
+ r = nil
+ begin
+ r = [self.parent_model.show(self.parent_id, self.profiler.operators)]
+ rescue ActiveRecord::RecordNotFound, ActiveRecord::Forbidden
+ r = []
+ end
+ ::Locmare::Filer.new self.parent_model.item_name, r, nil, self.profiler.operators
+ end
+
+ def model_manifest
+ ::Manifest.manifest.models[self.profiler.item_name]
+ end
+
+ def model_belongs_to_manifest
+ self.model_manifest.associations.belongs_to[@belongs_to_manifest.model_name]
+ end
+
+ def profiler
+ @association.profiler
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module ProfilerModule
+ module AssociationModule
+ class HasMany
+ attr :association, :has_many_manifest
+ def initialize association, has_many_manifest
+ @association = association
+ @has_many_manifest = has_many_manifest
+ end
+
+ def item
+ self.profiler.item
+ end
+
+ def has_many_model
+ @has_many_manifest.model
+ end
+
+ def filer
+ list_result = @has_many_manifest.list.open(self.profiler.operators, {:id => self.item.id, :page => 1, :page_size => 3})
+ items = list_result.items
+ ::Locmare::Filer.new self.has_many_model.item_name, items, nil, self.profiler.operators
+ end
+
+ def profiler
+ @association.profiler
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module ProfilerModule
+ module AssociationModule
+ class HasOne
+ attr :association, :has_one_manifest
+ def initialize association, has_one_manifest
+ @association = association
+ @has_one_manifest = has_one_manifest
+ end
+
+ def item
+ self.profiler.item
+ end
+
+ def has_one_model
+ @has_one_manifest.model
+ end
+
+ def filer
+ list_result = @has_one_manifest.list.open(self.profiler.operators, {:id => self.item.id})
+ items = list_result.items
+ ::Locmare::Filer.new self.has_one_model.item_name, items, nil, self.profiler.operators
+ end
+
+ def profiler
+ @association.profiler
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module ProfilerModule
+ class Column
+ attr :profiler, :column_name
+ def initialize profiler, column_name
+ @profiler = profiler
+ @column_name = column_name
+ end
+
+ def label
+ self.item.class.human_attribute_name(@column_name)
+ end
+
+ def value
+ self.item.attributes[@column_name]
+ end
+
+ def note
+ end
+
+ def date?
+ case model_attribute_manifest.type
+ when 'datetime'
+ if self.value
+ true
+ else
+ false
+ end
+ else
+ false
+ end
+ end
+
+ def note?
+ if self.model_attribute_source_manifest
+ case self.model_attribute_source_manifest.type
+ when 'magic_number'
+ true
+ when 'model'
+ false
+ else
+ false
+ end
+ else
+ false
+ end
+ end
+
+ def select_item_name
+ self.model_attribute_source_manifest.select_item_name
+ end
+
+ def item
+ @profiler.item
+ end
+
+ def model_manifest
+ ::Manifest.manifest.models[@profiler.item_name]
+ end
+
+ def model_attribute_manifest
+ self.model_manifest.attributes[@column_name]
+ end
+
+ def model_attribute_source_manifest
+ self.model_attribute_manifest.source
+ end
+
+ def template_dir
+ @profiler.template_dir
+ end
+
+ def template_file_name
+ "column"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ def value_template_dir
+ @profiler.template_dir + "column_value/"
+ end
+
+ def value_template_file_name
+ if self.date?
+ 'date'
+ else
+ 'default'
+ end
+ end
+
+ def value_template_name
+ self.value_template_dir + self.value_template_file_name
+ end
+
+ def note_template_dir
+ @profiler.template_dir + "column_note/"
+ end
+
+ def note_template_file_name
+ if self.note?
+ 'default'
+ else
+ 'none'
+ end
+ end
+
+ def note_template_name
+ self.note_template_dir + self.note_template_file_name
+ end
+
+ end
+ end
+end
+
--- /dev/null
+module Locmare
+ module ProfilerModule
+ class Header
+ attr :profiler
+ def initialize profiler
+ @profiler = profiler
+ end
+
+ def filer
+ Locmare::Filer.new @profiler.item_name, [@profiler.item], nil, @profiler.operators
+ end
+
+ end
+
+ end
+end
+
require_dependency "manifest/manifest"
require_dependency "manifest/controller"
require_dependency "manifest/model"
-require_dependency "manifest/profiler"
-require_dependency "manifest/filer"
-require_dependency "manifest/form"
-require_dependency "manifest/list_group"
require_dependency "manifest/system_resource"
-require_dependency "manifest/local/view"
Manifest::load JSON.parse(open(File.expand_path('../../public/manifest.json', __FILE__)).read)
Manifest.manifest.init
+++ /dev/null
-require_dependency "manifest/local/view/filer"
-require_dependency "manifest/local/view/form"
-require_dependency "manifest/local/view/profiler"
-require_dependency "manifest/local/view/list_group"
-module Manifest
- module View
- end
-
-end
-
+++ /dev/null
-require_dependency "manifest/local/view/filer/header"
-require_dependency "manifest/local/view/filer/body"
-require_dependency "manifest/local/view/filer/footer"
-module Manifest
- module View
- class Filer
- include FilerModule
- attr :manifest, :item_name, :items, :paginate, :operators, :template_dir,
- :header, :body, :footer
- def initialize item_name, items, paginate, operators
- @item_name = item_name
- @items = items
- @paginate = paginate
- @operators = operators
- @manifest = Manifest.manifest.filers[@item_name]
- @template_dir = 'templates/r/filer/'
- @header = Header.new self
- @body = Body.new self
- @footer = Footer.new self, paginate
- end
-
- def model
- ::Manifest::item_name_to_model @item_name
- end
-
- def template_file_name
- "filer"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- def image_dir
- '/images/'
- end
-
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/symbol"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/caption"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/summary"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/icon"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/date"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/edit"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- class FileItem
- include FileItemModule
-
- attr :file_body, :item,
- :symbol, :caption, :summary, :icon, :date, :edit
- def initialize file_body, item
- @file_body = file_body
- @item = item
- @symbol = SymbolItemColumnFactory.factory self, self.filer.manifest.symbol, @item
- @caption = CaptionItemColumnFactory.factory self, self.filer.manifest.caption, @item
- @summary = SummaryItemColumnFactory.factory self, self.filer.manifest.summary, @item
- @icon = IconItemColumnFactory.factory self, self.filer.manifest.icon, @item
- @date = DateItemColumnFactory.factory self, self.filer.manifest.date, @item
- @edit = EditItemColumnFactory.factory self, self.filer.manifest.edit, @item
- end
-
- def filer
- @file_body.filer
- end
-
- def manifest
- self.filer.manifest
- end
-
- def item_name
- self.filer.item_name
- end
-
- def model
- self.filer.model
- end
-
- def items
- self.filer.items
- end
-
- def template_dir
- self.filer.template_dir
- end
-
- def template_file_name
- "file_item"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/caption/base"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/caption/default"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/caption/template"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/caption/none"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- class CaptionItemColumnFactory
- include CaptionItemColumnModule
- @@types = {
- 'default' => Default, 'template' => Template, 'none' => None
- }
- def self.factory file_item, my_manifest, item
- type = my_manifest.type
- raise "undefined type for local view filers > #{file_item.item_name} > caption > default > face\n" unless type
- my_class = @@types[type]
- raise "undefined class for local view filers > #{file_item.item_name} > caption > default > face > #{type}\n" unless my_class
- my_class.new(file_item, my_manifest, item)
- end
-
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module CaptionItemColumnModule
- class Base
- attr :file_item, :caption_manifest, :item, :column_name
-
- def initialize file_item, caption_manifest, item
- @file_item = file_item
- @caption_manifest = caption_manifest
- @item = item
- @column_name = 'caption'
- end
-
- def filer
- @file_item.filer
- end
-
- def manifest
- self.filer.manifest
- end
-
- def item_name
- self.filer.item_name
- end
-
- def column_template_dir
- self.filer.template_dir + 'item_column/'
- end
-
- def column_template_file_name
- raise "undefined column_template_file_name\n"
- end
-
- def column_template_name
- self.column_template_dir + self.column_template_file_name
- end
-
- def item_template_dir
- self.filer.template_dir + 'caption/'
- end
-
- def item_template_file_name
- raise "undefined item_template_file_name\n"
- end
-
- def item_template_name
- self.item_template_dir + self.item_template_file_name
- end
-
- end
-
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/caption/default/face"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/caption/default/link"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module CaptionItemColumnModule
- class Default < Base
- include DefaultModule
- attr :face, :link
-
- def initialize file_item, caption_manifest, item
- super
- @face = FaceFactory.factory self, self.caption_manifest.face, @item
- @link = LinkFactory.factory self, self.caption_manifest.link, @item
- end
-
- def column_template_file_name
- 'show'
- end
-
- def item_template_file_name
- if @caption_manifest.link.type == 'none'
- 'default_without_link'
- else
- 'default'
- end
- end
-
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/caption/default/face/face"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module CaptionItemColumnModule
- module DefaultModule
- class FaceFactory
- include FaceModule
- @@types = {
- 'column' => ColumnFace, 'method' => MethodFace, 'none' => NoneFace
- }
- def self.factory file_item, my_manifest, item
- type = my_manifest.type
- raise "undefined type for local view filers > #{file_item.item_name} > caption > face\n" unless type
- my_class = @@types[type]
- raise "undefined class for local view filers > #{file_item.item_name} > caption > face > #{type}\n" unless my_class
- my_class.new(file_item, my_manifest, item)
- end
-
- end
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module CaptionItemColumnModule
- module DefaultModule
- module FaceModule
- class BaseFace
- attr :default_caption, :face_manifest, :item
- def initialize default_caption, face_manifest, item
- @default_caption = default_caption
- @face_manifest = face_manifest
- @item = item
- end
-
- def filer
- @default_caption.filer
- end
-
- def manifest
- self.filer.manifest
- end
-
- def item_name
- self.filer.item_name
- end
-
- def template_dir
- self.filer.template_dir + "caption_face/"
- end
-
- def template_file_name
- raise "undefined template_file_name\n"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
-
- class ColumnFace < BaseFace
- def template_file_name
- if face.blank?
- 'empty'
- else
- 'column'
- end
- end
-
- def face
- @item.attributes[@face_manifest.column_name]
- end
-
- end
-
- class MethodFace < BaseFace
- def template_file_name
- if face.blank?
- 'empty'
- else
- 'column'
- end
- end
-
- def face
- @item.__send__ @face_manifest.method_name
- end
-
- end
-
- class NoneFace < BaseFace
- def template_file_name
- 'none'
- end
-
- end
-
- end
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/caption/default/link/link"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module CaptionItemColumnModule
- module DefaultModule
- class LinkFactory
- include LinkModule
- @@types = {
- 'action' => ActionLink, 'none' => NoneLink, 'url_column' => UrlColumnLink
- }
- def self.factory file_item, my_manifest, item
- type = my_manifest.type
- raise "undefined type for local view filers > #{file_item.item_name} > caption > link\n" unless type
- my_class = @@types[type]
- raise "undefined class for local view filers > #{file_item.item_name} > caption > link > #{type}\n" unless my_class
- my_class.new(file_item, my_manifest, item)
- end
-
- end
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module CaptionItemColumnModule
- module DefaultModule
- module LinkModule
- class BaseLink
- attr :default_caption, :link_manifest, :item
- def initialize default_caption, link_manifest, item
- @default_caption = default_caption
- @link_manifest = link_manifest
- @item = item
- end
-
- def url
- raise "undefined url\n"
- end
-
- end
-
- class ActionLink < BaseLink
-
- def url
- @link_manifest.action_path + @item.id.to_s
- end
-
- end
-
- class NoneLink < BaseLink
-
- def url
- nil
- end
-
- end
-
- class UrlColumnLink < BaseLink
-
- def url
- @item.attributes[@link_manifest.column_name]
- end
-
- end
-
- end
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module CaptionItemColumnModule
- class None < Base
-
- def column_template_file_name
- 'none'
- end
-
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module CaptionItemColumnModule
- class Template < Base
- def template_file_name
- @caption_manifest.template_name
- end
-
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/date/date"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- class DateItemColumnFactory
- include DateItemColumnModule
- @@types = {
- 'default' => Default, 'none' => None
- }
- def self.factory file_item, my_manifest, item
- type = my_manifest.type
- raise "undefined type for local view filers > #{file_item.item_name} > date\n" unless type
- my_class = @@types[type]
- raise "undefined class for local view filers > #{file_item.item_name} > date > #{type}\n" unless my_class
- my_class.new(file_item, my_manifest, item)
- end
-
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module DateItemColumnModule
- class Base
- attr :file_item, :date_manifest, :item, :column_name
-
- def initialize file_item, date_manifest, item
- @file_item = file_item
- @date_manifest = date_manifest
- @item = item
- @column_name = 'date'
- end
-
- def filer
- @file_item.filer
- end
-
- def manifest
- self.filer.manifest
- end
-
- def item_name
- self.filer.item_name
- end
-
- def column_template_dir
- self.filer.template_dir + 'item_column/'
- end
-
- def column_template_file_name
- raise "undefined column_template_file_name\n"
- end
-
- def column_template_name
- self.column_template_dir + self.column_template_file_name
- end
-
- def item_template_dir
- self.filer.template_dir + 'date/'
- end
-
- def item_template_file_name
- raise "undefined item_template_file_name\n"
- end
-
- def item_template_name
- self.item_template_dir + self.item_template_file_name
- end
-
- end
-
- class Default < Base
- def column_template_file_name
- 'show'
- end
-
- def item_template_file_name
- 'default'
- end
-
- end
-
- class None < Base
- def column_template_file_name
- 'none'
- end
-
- end
-
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/edit/edit"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- class EditItemColumnFactory
- include EditItemColumnModule
- @@types = {
- 'default' => Default, 'none' => None, 'account' => Account, 'template' => Template
- }
- def self.factory file_item, my_manifest, item
- type = my_manifest.type
- raise "undefined type for local view filers > #{file_item.item_name} > edit\n" unless type
- my_class = @@types[type]
- raise "undefined class for local view filers > #{file_item.item_name} > edit > #{type}\n" unless my_class
- my_class.new(file_item, my_manifest, item)
- end
-
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module EditItemColumnModule
- class Base
- attr :file_item, :edit_manifest, :item, :column_name
-
- def initialize file_item, edit_manifest, item
- @file_item = file_item
- @edit_manifest = edit_manifest
- @item = item
- @column_name = 'edit'
- end
-
- def filer
- @file_item.filer
- end
-
- def manifest
- self.filer.manifest
- end
-
- def item_name
- self.filer.item_name
- end
-
- def image_dir
- self.filer.image_dir
- end
-
- def column_template_dir
- self.filer.template_dir + 'item_column/'
- end
-
- def column_template_file_name
- raise "undefined column_template_file_name\n"
- end
-
- def column_template_name
- self.column_template_dir + self.column_template_file_name
- end
-
- def item_template_dir
- self.filer.template_dir + 'edit/'
- end
-
- def item_template_file_name
- raise "undefined item_template_file_name\n"
- end
-
- def item_template_name
- self.item_template_dir + self.item_template_file_name
- end
-
- end
-
- class Default < Base
- def column_template_file_name
- 'show'
- end
-
- def item_template_file_name
- if @item.own? self.filer.operators
- 'default'
- else
- 'none'
- end
- end
-
- def edit_img_file_name
- self.image_dir + 'edit.png'
- end
-
- def remove_img_file_name
- self.image_dir + 'remove.png'
- end
-
- def img_opt
- {:width => Manifest.manifest.magic_numbers['thumbnail_width'] / 2,
- :height => Manifest.manifest.magic_numbers['thumbnail_height'] / 2}
- end
-
- def edit_img_opt
- img_opt.merge :src => self.edit_img_file_name
- end
-
- def remove_img_opt
- img_opt.merge :src => self.remove_img_file_name
- end
-
- end
-
- class None < Base
- def column_template_file_name
- 'none'
- end
-
- end
-
- class Account < Base
- def column_template_file_name
- 'show'
- end
-
- def item_template_file_name
- if @item.own? self.filer.operators
- 'account'
- else
- 'none'
- end
- end
-
- def edit_img_file_name
- self.image_dir + 'edit.png'
- end
-
- def img_opt
- {:width => Manifest.manifest.magic_numbers['thumbnail_width'] / 2,
- :height => Manifest.manifest.magic_numbers['thumbnail_height'] / 2}
- end
-
- def edit_img_opt
- img_opt.merge :src => self.edit_img_file_name
- end
-
- end
-
- class Template < Base
- def column_template_file_name
- 'show'
- end
-
- def item_template_file_name
- 'template'
- end
-
- def template_dir
- @item.path_name + '/'
- end
-
- def template_file_name
- @edit_manifest.template_name
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
-
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/icon/icon"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- class IconItemColumnFactory
- include IconItemColumnModule
- @@types = {
- 'default' => Default, 'none' => None
- }
- def self.factory file_item, my_manifest, item
- type = my_manifest.type
- raise "undefined type for local view filers > #{file_item.item_name} > icon\n" unless type
- my_class = @@types[type]
- raise "undefined class for local view filers > #{file_item.item_name} > icon > #{type}\n" unless my_class
- my_class.new(file_item, my_manifest, item)
- end
-
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module IconItemColumnModule
- class Base
- attr :file_item, :icon_manifest, :item, :column_name
-
- def initialize file_item, icon_manifest, item
- @file_item = file_item
- @icon_manifest = icon_manifest
- @item = item
- @column_name = 'icon'
- end
-
- def filer
- @file_item.filer
- end
-
- def manifest
- self.filer.manifest
- end
-
- def item_name
- self.filer.item_name
- end
-
- def column_template_dir
- self.filer.template_dir + 'item_column/'
- end
-
- def column_template_file_name
- raise "undefined column_template_file_name\n"
- end
-
- def column_template_name
- self.column_template_dir + self.column_template_file_name
- end
-
- def item_template_dir
- self.filer.template_dir + 'icon/'
- end
-
- def item_template_file_name
- raise "undefined item_template_file_name\n"
- end
-
- def item_template_name
- self.item_template_dir + self.item_template_file_name
- end
-
- end
-
- class Default < Base
- def column_template_file_name
- 'show'
- end
-
- def item_template_file_name
- 'default'
- end
-
- def icon_file_name
- '/images/prof.png'
- end
-
- def icon_size
- Manifest.manifest.magic_numbers['thumbnail_width']
- end
-
- end
-
- class None < Base
- def column_template_file_name
- 'none'
- end
-
- end
-
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/summary/summary"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- class SummaryItemColumnFactory
- include SummaryItemColumnModule
- @@types = {
- 'none' => None, 'template' => Template
- }
- def self.factory file_item, my_manifest, item
- type = my_manifest.type
- raise "undefined type for local view filers > #{file_item.item_name} > summary\n" unless type
- my_class = @@types[type]
- raise "undefined class for local view filers > #{file_item.item_name} > summary > #{type}\n" unless my_class
- my_class.new(file_item, my_manifest, item)
- end
-
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module SummaryItemColumnModule
- class Base
- attr :file_item, :summary_manifest, :item, :column_name
-
- def initialize file_item, summary_manifest, item
- @file_item = file_item
- @summary_manifest = summary_manifest
- @item = item
- @column_name = 'summary'
- end
-
- def filer
- @file_item.filer
- end
-
- def manifest
- self.filer.manifest
- end
-
- def item_name
- self.filer.item_name
- end
-
- def column_template_dir
- self.filer.template_dir + 'item_column/'
- end
-
- def column_template_file_name
- raise "undefined column_template_file_name\n"
- end
-
- def column_template_name
- self.column_template_dir + self.column_template_file_name
- end
-
- def item_template_dir
- self.filer.template_dir + 'summary/'
- end
-
- def item_template_file_name
- raise "undefined item_template_file_name\n"
- end
-
- def item_template_name
- self.item_template_dir + self.item_template_file_name
- end
-
- end
-
- class None < Base
- def column_template_file_name
- "none"
- end
-
- end
-
- class Template < Base
- def column_template_file_name
- 'show'
- end
-
- def item_template_file_name
- 'template'
- end
-
- def template_dir
- @item.path_name + '/'
- end
-
- def template_file_name
- @summary_manifest.template_name
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/symbol/base"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/symbol/default"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/symbol/template"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- class SymbolItemColumnFactory
- include SymbolItemColumnModule
- @@types = {
- 'default' => Default, 'template' => Template
- }
- def self.factory file_item, my_manifest, item
- type = my_manifest.type
- raise "undefined type for local view filers > #{file_item.item_name} > symbol\n" unless type
- my_class = @@types[type]
- raise "undefined class for local view filers > #{file_item.item_name} > symbol > #{type}\n" unless my_class
- my_class.new(file_item, my_manifest, item)
- end
-
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module SymbolItemColumnModule
- class Base
- attr :file_item, :symbol_manifest, :item, :column_name
-
- def initialize file_item, symbol_manifest, item
- @file_item = file_item
- @symbol_manifest = symbol_manifest
- @item = item
- @column_name = 'symbol'
- end
-
- def filer
- @file_item.filer
- end
-
- def manifest
- self.filer.manifest
- end
-
- def item_name
- self.filer.item_name
- end
-
- def column_template_dir
- self.filer.template_dir + 'item_column/'
- end
-
- def column_template_file_name
- raise "undefined column_template_file_name\n"
- end
-
- def column_template_name
- self.column_template_dir + self.column_template_file_name
- end
-
- def item_template_dir
- self.filer.template_dir + 'symbol/'
- end
-
- def item_template_file_name
- raise "undefined item_template_file_name\n"
- end
-
- def item_template_name
- self.item_template_dir + self.item_template_file_name
- end
-
- end
-
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/symbol/default/face"
-require_dependency "manifest/local/view/filer/body/file_body/file_item/symbol/default/link"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module SymbolItemColumnModule
- class Default < Base
- include DefaultModule
- attr :face, :link
-
- def initialize file_item, symbol_manifest, item
- super
- @face = FaceFactory.factory self, self.symbol_manifest.face, @item
- @link = LinkFactory.factory self, self.symbol_manifest.link, @item
- end
-
- def column_template_file_name
- 'show'
- end
-
- def item_template_file_name
- if @symbol_manifest.link.type == 'none'
- 'default_without_link'
- else
- 'default'
- end
- end
-
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/symbol/default/face/face"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module SymbolItemColumnModule
- module DefaultModule
- class FaceFactory
- include FaceModule
- @@types = {
- 'image' => ImageFace, 'picture' => PictureFace
- }
- def self.factory file_item, my_manifest, item
- type = my_manifest.type
- raise "undefined type for local view filers > #{file_item.item_name} > symbol > face\n" unless type
- my_class = @@types[type]
- raise "undefined class for local view filers > #{file_item.item_name} > symbol > face > #{type}\n" unless my_class
- my_class.new(file_item, my_manifest, item)
- end
-
- end
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module SymbolItemColumnModule
- module DefaultModule
- module FaceModule
- class BaseFace
- attr :default_symbol, :face_manifest, :item
- def initialize default_symbol, face_manifest, item
- @default_symbol = default_symbol
- @face_manifest = face_manifest
- @item = item
- end
-
- def filer
- @default_symbol.filer
- end
-
- def manifest
- self.filer.manifest
- end
-
- def item_name
- self.filer.item_name
- end
-
- def template_dir
- self.filer.template_dir + "symbol_face/"
- end
-
- def template_file_name
- raise "undefined template_file_name\n"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
-
- class ImageFace < BaseFace
- def template_file_name
- 'image'
- end
-
- def url
- @face_manifest.url
- end
-
- def tag_opt
- {:src => self.url, :width => Manifest.manifest.magic_numbers['thumbnail_width'], :height => Manifest.manifest.magic_numbers['thumbnail_height']}
- end
-
- end
-
- class PictureFace < BaseFace
- def template_file_name
- 'picture'
- end
-
- def method_name
- @face_manifest.method_name
- end
-
- def tag_opt
- if @item.methods(true).include?(self.method_name.to_sym)
- @item.__send__ self.method_name
- else
- {:src => '/images/error.png', :width => Manifest.manifest.magic_numbers['thumbnail_width'], :height => Manifest.manifest.magic_numbers['thumbnail_height']}
- end
- end
-
- end
-
- end
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_body/file_item/symbol/default/link/link"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module SymbolItemColumnModule
- module DefaultModule
- class LinkFactory
- include LinkModule
- @@types = {
- 'action' => ActionLink, 'none' => NoneLink, 'url_column' => UrlColumnLink
- }
- def self.factory file_item, my_manifest, item
- type = my_manifest.type
- raise "undefined type for local view filers > #{file_item.item_name} > symbol > link\n" unless type
- my_class = @@types[type]
- raise "undefined class for local view filers > #{file_item.item_name} > symbol > link > #{type}\n" unless my_class
- my_class.new(file_item, my_manifest, item)
- end
-
- end
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module SymbolItemColumnModule
- module DefaultModule
- module LinkModule
- class BaseLink
- attr :default_symbol, :link_manifest, :item
- def initialize default_symbol, link_manifest, item
- @default_symbol = default_symbol
- @link_manifest = link_manifest
- @item = item
- end
-
- def url
- raise "undefined url\n"
- end
-
- end
-
- class ActionLink < BaseLink
-
- def url
- @link_manifest.action_path + @item.id.to_s
- end
- end
-
- class NoneLink < BaseLink
-
- def url
- nil
- end
-
- end
-
- class UrlColumnLink < BaseLink
-
- def url
- @item.attributes[@link_manifest.column_name]
- end
-
- end
-
- end
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileBodyModule
- module FileItemModule
- module SymbolItemColumnModule
- class Template < Base
- def column_template_file_name
- 'show'
- end
-
- def item_template_file_name
- 'template'
- end
-
- def template_dir
- @item.path_name + '/'
- end
-
- def template_file_name
- @symbol_manifest.template_name
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/filer/body/file_header/base"
-require_dependency "manifest/local/view/filer/body/file_header/show"
-require_dependency "manifest/local/view/filer/body/file_header/none"
-module Manifest
- module View
- module FilerModule
- module BodyModule
- class FileHeader
- include FileHeaderModule
-
- attr :body,
- :symbol, :caption, :summary, :icon, :date, :edit
- def initialize body
- @body = body
- c = self.filer.manifest.symbol.visible? ? Show : None
- @symbol = c.new self, 'symbol'
- c = self.filer.manifest.caption.visible? ? Show : None
- @caption = c.new self, 'caption'
- c = self.filer.manifest.summary.visible? ? Show : None
- @summary = c.new self, 'summary'
- c = self.filer.manifest.icon.visible? ? Show : None
- @icon = c.new self, 'icon'
- c = self.filer.manifest.date.visible? ? Show : None
- @date = c.new self, 'date'
- c = self.filer.manifest.edit.visible? ? Show : None
- @edit = c.new self, 'edit'
- end
-
- def filer
- @body.filer
- end
-
- def manifest
- self.filer.manifest
- end
-
- def item_name
- self.filer.item_name
- end
-
- def model
- self.filer.model
- end
-
- def items
- self.filer.items
- end
-
- def template_dir
- @body.template_dir
- end
-
- def template_file_name
- "file_header"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileHeaderModule
- class Base
- attr :file_header, :column_name
- def initialize file_header, column_name
- @file_header = file_header
- @column_name = column_name
- end
-
- def filer
- @file_header.filer
- end
-
- def manifest
- self.filer.manifest
- end
-
- def item_name
- self.filer.item_name
- end
-
- def model
- self.filer.model
- end
-
- def items
- self.filer.items
- end
-
- def template_dir
- self.filer.template_dir + 'header_column/'
- end
-
- def template_file_name
- "show"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileHeaderModule
- class None < Base
- def template_file_name
- "none"
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- module BodyModule
- module FileHeaderModule
- class Show < Base
- def template_file_name
- "show"
- end
- end
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- class Footer
- attr :filer, :paginate
- def initialize filer, paginate
- @filer = filer
- @paginate = paginate
- end
-
- def template_dir
- @filer.template_dir
- end
-
- def template_file_name
- "footer"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FilerModule
- class Header
- attr :filer
- def initialize filer
- @filer = filer
- end
-
- def model
- @filer.model
- end
-
- def icon_name
- self.model.singular
- end
-
- def icon_size
- Manifest.manifest.magic_numbers['thumbnail_width'] / 2
- end
-
- def human_name
- self.model.model_name.human
- end
-
- def template_dir
- @filer.template_dir
- end
-
- def template_file_name
- "header"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/form/field"
-module Manifest
- module View
- class Form
- include FormModule
- attr :form_name, :item, :mounted, :submit, :operators, :template_dir,
- :fields
- def initialize form_name, item, mounted, submit, operators
- @form_name = form_name
- @item = item
- @mounted = mounted
- @submit = submit
- @operators = operators
- @manifest = Manifest.manifest.forms[@form_name]
- @template_dir = 'templates/r/form/'
- @fields = {}
- @manifest.each_field do |field_name, field_manifest|
- @fields[field_name] = Field.new self, field_name, field_manifest
- end
- end
-
- def each_field
- @manifest.each_field do |field_name, field_manifest|
- 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 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
-
- def fields_template_name
- self.template_dir + 'fields'
- end
-
- def image_dir
- '/images/'
- end
-
- end
- end
-
-end
+++ /dev/null
-require_dependency "manifest/local/view/form/field/label"
-require_dependency "manifest/local/view/form/field/tag"
-require_dependency "manifest/local/view/form/field/helper"
-module Manifest
- module View
- module FormModule
- class Field
- include FieldModule
- 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.model_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
- @field_manifest.form_field_name
- end
-
- def form_name
- @form.form_name
- end
-
- def template_dir
- @form.template_dir + 'field/'
- end
-
- def template_file_name
- @field_manifest.type
- end
-
- def template_name
- self.template_dir + self.template_file_name
- 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
-end
+++ /dev/null
-require_dependency "manifest/local/view/form/field/helper/base"
-require_dependency "manifest/local/view/form/field/helper/size"
-require_dependency "manifest/local/view/form/field/helper/tail_angle"
-require_dependency "manifest/local/view/form/field/helper/color"
-require_dependency "manifest/local/view/form/field/helper/popup"
-module Manifest
- module View
- module FormModule
- module FieldModule
- class HelperFactory
- include HelperModule
- @@types = {
- 'size' => Size, 'tail_angle' => TailAngle, 'color' => Color,
- 'popup' => Popup
- }
- def self.factory field, my_manifest
- type = my_manifest.type
- my_class = @@types[type]
- raise "undefined class for local view forms > #{field.form_name} > fields > #{field.field_name} > helper > #{type}\n" unless my_class
- my_class.new(field, my_manifest)
- end
-
- end
-
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module HelperModule
- class Base
- attr :field, :helper_manifest
-
- def initialize field, helper_manifest
- @field = field
- @helper_manifest = helper_manifest
- end
-
- def type
- @helper_manifest.type
- end
-
- def path
- @helper_manifest.path
- end
-
- def form
- @field.form
- end
-
- def template_dir
- self.form.template_dir + 'helper/'
- end
-
- def template_file_name
- @helper_manifest.file_name
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- def form_name
- @field.form_name
- end
-
- def field_name
- @field.field_name
- end
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module HelperModule
- class Color < Base
- def wrapper
- @helper_manifest.wrapper
- end
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module HelperModule
- class Popup < Base
- attr :source
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module HelperModule
- class Size < Base
-
- def dom_class
- @helper_manifest.dom_class
- end
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module HelperModule
- class TailAngle < Base
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/form/field/label/label"\r
-module Manifest\r
- module View\r
- module FormModule\r
- module FieldModule\r
- class LabelFactory\r
- include LabelModule\r
- @@types = {\r
- 'default' => Default, 'none' => None\r
- }\r
- def self.factory field, my_manifest\r
- type = my_manifest.type\r
- my_class = @@types[type]\r
- raise "undefined class for local view forms > #{field.form_name} > fields > #{field.field_name} > label > #{type}\n" unless my_class\r
- my_class.new(field, my_manifest)\r
- end\r
- \r
- end\r
- \r
- end\r
- end\r
- end\r
-end\r
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module LabelModule
- class Base
- attr :field, :label_manifest
-
- def initialize field, label_manifest
- @field = field
- @label_manifest = label_manifest
- end
-
- def form
- @field.form
- end
-
- def manifest
- self.form.manifest
- end
-
- def form_name
- self.form.form_name
- end
-
- def model
- self.form.model
- end
-
- def item
- self.form.item
- end
-
- def model_name
- @label_manifest.model_name
- end
-
- def column_name
- @label_manifest.column_name
- end
-
- def template_dir
- self.form.template_dir + 'label/'
- end
-
- def template_file_name
- raise "undefined template_file_name\n"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- def label_row_break_template_dir
- self.form.template_dir + 'label_row_break/'
- end
-
- def label_row_break_template_file_name
- if @label_manifest.row_break
- 'br'
- else
- 'no_break'
- end
- end
-
- def label_row_break_template_name
- self.label_row_break_template_dir + self.label_row_break_template_file_name
- end
-
- end
-
- class Default < Base
- def template_file_name
- 'default'
- end
-
- def label_name
- 'activerecord.attributes.' + self.model_name + '.' + self.column_name
- end
-
- end
-
- class None < Base
- def template_file_name
- 'none'
- end
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/form/field/tag/base"\r
-require_dependency "manifest/local/view/form/field/tag/text"\r
-require_dependency "manifest/local/view/form/field/tag/number"\r
-require_dependency "manifest/local/view/form/field/tag/text_area"\r
-require_dependency "manifest/local/view/form/field/tag/select"\r
-require_dependency "manifest/local/view/form/field/tag/hidden"\r
-module Manifest\r
- module View\r
- module FormModule\r
- module FieldModule\r
- class TagFactory\r
- include TagModule\r
- @@types = {\r
- 'text' => TextTag, 'number' => NumberTag, 'text_area' => TextAreaTag, \r
- 'select' => SelectTag, 'hidden' => HiddenTag\r
- }\r
- def self.factory field, my_manifest\r
- type = my_manifest.type\r
- my_class = @@types[type]\r
- raise "undefined class for local view forms > #{field.form_name} > fields > #{field.field_name} > tag > #{type}\n" unless my_class\r
- my_class.new(field, my_manifest)\r
- end\r
- \r
- end\r
- \r
- end\r
- end\r
- end\r
-end\r
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module TagModule
- class Base
- attr :field, :tag_manifest
-
- def initialize field, tag_manifest
- @field = field
- @tag_manifest = tag_manifest
- end
-
- def form_field_name
- @field.form_field_name
- end
-
- def value
- @field.value
- end
-
- def options
- @field.options @tag_manifest.options
- end
-
- def form
- @field.form
- end
-
- def manifest
- self.form.manifest
- end
-
- def form_name
- self.form.form_name
- end
-
- def model
- self.form.model
- end
-
- def item
- self.form.item
- end
-
- def model_name
- @label_manifest.model_name
- end
-
- def column_name
- @label_manifest.column_name
- end
-
- def template_dir
- self.form.template_dir + 'tag/'
- end
-
- def template_file_name
- raise "undefined template_file_name\n"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module TagModule
- class HiddenTag < Base
- def template_file_name
- 'hidden'
- end
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module TagModule
- class NumberTag < Base
- def template_file_name
- 'number'
- end
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module TagModule
- class SelectTag < Base
- def template_file_name
- 'select'
- end
-
- def select_item_name
- model = ::Manifest.manifest.models[@field.field_manifest.model_name]
- attr = model.attributes[@field.field_manifest.column_name]
- attr.source.select_item_name
- end
-
- def items
- ::Manifest.manifest.system_resources.select_items[self.select_item_name]
- end
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module TagModule
- class TextTag < Base
- def template_file_name
- 'text'
- end
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module FormModule
- module FieldModule
- module TagModule
- class TextAreaTag < Base
- def template_file_name
- 'text_area'
- end
-
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/list_group/list/base"
-require_dependency "manifest/local/view/list_group/list/public"
-require_dependency "manifest/local/view/list_group/list/private"
-require_dependency "manifest/local/view/list_group/list/system_resource"
-require_dependency "manifest/local/view/list_group/list/filter"
-require_dependency "manifest/local/view/list_group/list/through_filter"
-require_dependency "manifest/local/view/list_group/list/foreign_filter"
-require_dependency "manifest/local/view/list_group/list/play"
-module Manifest
- module View
- class ListGroup
- include ListGroupModule
-
- def self.types
- {
- 'public' => PublicList, 'private' => PrivateList, 'system_resource' => SystemResourceList,
- 'filter' => FilterList, 'through_filter' => ThroughFilterList, 'foreign_filter' => ForeignFilterList,
- 'play' => PlayList
- }
- end
-
- def self.list item_name, list_name
- list_group_manifest = Manifest.manifest.list_groups[item_name]
- list_manifest = list_group_manifest.lists[list_name]
- self.types[list_manifest.type].new item_name, list_name
- end
-
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ListGroupModule
- class Base
- class ListResult
- attr :items, :paginate
- def initialize items, paginate
- @items = items
- @paginate = paginate
- end
-
- end
-
- attr :item_name, :list_name,
- :model_manifest, :model_list_manifest, :model,
- :default_page_size, :max_page_size
- def initialize item_name, list_name
- @item_name = item_name
- @list_name = list_name
- self.init
- end
-
- def init
- @list_group_manifest = ::Manifest.manifest.list_groups[@item_name]
- @list_manifest = @list_group_manifest.lists[@list_name]
- @where = @list_manifest.where
- @includes = @list_manifest.includes
- @model_manifest = ::Manifest.manifest.models[@item_name]
- @model_list_manifest = @model_manifest.list
- @model = ::Manifest.item_name_to_model @item_name
- @table_name = @model.table_name
- end
-
- def model_name
- @model.model_name
- end
-
- def model_manifest
- @model.model_manifest
- end
-
- def page_number prm = nil
- page = prm.to_i
- page = 1 if page < 1
- page
- end
-
- def page_size prm
- page_size = prm.to_i
- page_size = self.max_page_size if page_size > self.max_page_size
- page_size = self.default_page_size if page_size < 1
- page_size
- end
-
- def default_page_size
- @model_list_manifest.default_page_size
- end
-
- def max_page_size
- @model_list_manifest.max_page_size
- end
-
- def base_where_condition
- method_name = @where.conditions do |name|
- name
- end
- @model.__send__ method_name
- end
-
- def where_condition
- base_where_condition
- end
-
- def include_hash
- @includes.includes
- end
-
- def order
- @model.list_order
- end
-
- def items operators, options, offset, page_size
- @model.where(self.where_condition).includes(self.include_hash).order(self.order).offset(offset).limit(page_size)
- end
-
- def count operators, options
- @model.where(self.where_condition).includes(self.include_hash).count
- end
-
- def paginate count, offset, page_size
- c = count ? count.to_i : 0
- Kaminari.paginate_array(Array.new(c, nil)).page(offset).per(page_size)
- end
-
- def open operators, options
- page = self.page_number(options[:page])
- page_size = self.page_size options[:page_size]
- offset = (page -1) * page_size
- items = self.items operators, options, offset, page_size
- count = self.count operators, options
- pg = self.paginate count, offset, page_size
- ListResult.new items, pg
- end
-
- end
-
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ListGroupModule
- class FilterList < Base
- attr :filter_key, :filter_item_name
-
- def init
- super
- @filter_key = @list_manifest.filter_key
- @filter_item_name = @list_manifest.filter_item_name
- end
-
- def where_condition filter_item_id
- w = self.base_where_condition
- w += ' and ' unless w.blank?
- [w + @table_name + '.' + @filter_key + ' = ?', filter_item_id]
- end
-
- def include_hash
- w = super
- w.merge!({@filter_item_name => {} }) unless w[@filter_item_name]
- w
- end
-
- def items operators, options, offset, page_size
- filter_item_id = options[:id]
- @model.where(self.where_condition(filter_item_id)).includes(self.include_hash).order(self.order).offset(offset).limit(page_size)
- end
-
- def count operators, options
- filter_item_id = options[:id]
- @model.where(self.where_condition(filter_item_id)).includes(self.include_hash).count
- end
-
- end
-
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ListGroupModule
- class ForeignFilterList < FilterList
-
- def init
- super
- end
-
- def where_condition filter_item_id
- w = self.base_where_condition
- w += ' and ' unless w.blank?
- [w + @filter_table_name + '.id' + ' = ?', filter_item_id]
- end
-
- def include_hash
- @model_manifest.tree[@tree_name].include_hash
- end
-
- end
-
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ListGroupModule
- class PlayList
- attr :model, :list_name, :list_manifest, :type,
- :default_page_size, :max_page_size
-
- def initialize model, list_name, list_manifest
- @model = model
- @list_name = list_name
- @list_manifest = list_manifest
- self.set_default
- self.init
- end
-
- def set_default
- @list_manifest['args'] ||= {}
- return
- @default_page_size = @conf['default_page_size'] || 25
- @max_page_size = @conf['max_page_size'] || 100
- @params_offset = params_offset
- @params_count = params_count
- @list_list_conf = @manifest.list(@item_name).lists[list_name] || {}
- @model_name = @list_list_conf['model']
- @filter_key = @list_list_conf['filter_key']
- @model = @model_name.classify.constantize
- @table_name = @model.table_name
- if @model.content?
- @owner_model = @model.owner_model
- @owner_table_name = @owner_model.table_name if @owner_model
- end
- end
-
- def init
- @type = @list_manifest['type']
- @args = @list_manifest['args']
- end
-
- end
-
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ListGroupModule
- class PrivateList < Base
-
- def init
- super
- end
-
- def where_condition operators
- case @model.owner_type
- when :author
- operator = operators.author
- when :artist
- operator = operators.artist
- end
- t = if @owner_model
- if @owner_model.owner_model
- @owner_model.owner_model.table_name
- else
- @owner_model.table_name
- end
- else
- @table_name
- end
- @where.conditions do |name|
- [t + '.' + @model.owner_type.to_s + '_id = ?', operator.id]
- end
- end
-
- def items operators, options, offset, page_size
- @model.where(self.where_condition(operators)).includes(self.include_hash).order(self.order).offset(offset).limit(page_size)
- end
-
- def count operators, options
- filter_item_id = options[:id]
- @model.where(self.where_condition(operators)).includes(self.include_hash).count
- end
-
- end
-
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ListGroupModule
- class PublicList < Base
-
- def init
- super
- end
-
- def order
- @model.list_order
- end
-
- end
-
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ListGroupModule
- class SystemResourceList < Base
-
- def init
- super
- end
-
- def items operators, options, offset, page_size
- # enable_list does not work when configured auto load in development.rb
- # auto loader undefing MODEL at reload manifest file
- # @model.enable_list
- super
- end
-
- end
-
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ListGroupModule
- class ThroughFilterList < FilterList
- attr :through
-
- def init
- super
- @through = @list_manifest.through
- @filter_table_name = ::Manifest.manifest.models[@filter_item_name].classify.table_name
- end
-
- def include_hash
- {@through => {@filter_item_name => {}} }
- end
-
- def where_condition filter_item_id
- w = self.base_where_condition
- w += ' and ' unless w.blank?
- [w + @filter_table_name + '.id' + ' = ?', filter_item_id]
- end
-
- end
-
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/profiler/header"
-require_dependency "manifest/local/view/profiler/column"
-require_dependency "manifest/local/view/profiler/association"
-module Manifest
- module View
- class Profiler
- include ProfilerModule
- attr :profiler_manifest, :item_name, :item, :operators, :template_dir,
- :header, :columns, :associations
- def initialize item_name, item, operators
- @item_name = item_name
- @item = item
- @operators = operators
- @profiler_manifest = Manifest.manifest.profilers[@item_name]
- @template_dir = 'templates/r/profiler/'
- @header = Header.new self
- @columns = @profiler_manifest.column_names.map {|column_name|
- Column.new self, column_name
- }
- @associations = Association.new self, @profiler_manifest.associations
- end
-
- def model
- ::Manifest::item_name_to_model @item_name
- end
-
- def template_file_name
- "profiler"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- def header_template_file_name
- "header"
- end
-
- def header_template_name
- self.template_dir + self.header_template_file_name
- end
-
- def columns_template_file_name
- "columns"
- end
-
- def columns_template_name
- self.template_dir + self.columns_template_file_name
- end
-
- def associations_template_file_name
- "associations"
- end
-
- def associations_template_name
- self.template_dir + self.associations_template_file_name
- end
-
- def image_dir
- '/images/'
- end
-
- end
- end
-end
+++ /dev/null
-require_dependency "manifest/local/view/profiler/association/belongs_to"
-require_dependency "manifest/local/view/profiler/association/has_many"
-require_dependency "manifest/local/view/profiler/association/has_one"
-module Manifest
- module View
- module ProfilerModule
- class Association
- include AssociationModule
- attr :profiler, :association_manifest,
- :belongs_to, :has_many, :has_one
- def initialize profiler, association_manifest
- @profiler = profiler
- @association_manifest = association_manifest
- @belongs_to = @association_manifest.belongs_to.map {|belongs_to_manifest|
- BelongsTo.new self, belongs_to_manifest
- }
- @has_many = @association_manifest.has_many.map {|list_name|
- HasMany.new self, list_name
- }
- @has_one = @association_manifest.has_one.map {|list_name|
- HasOne.new self, list_name
- }
- end
-
- def item
- @profiler.item
- end
-
- def model_manifest
- ::Manifest.manifest.models[@profiler.item_name]
- end
-
- def model_attribute_manifest
- model_manifest.attributes[@column_name]
- end
-
- def template_dir
- @profiler.template_dir
- end
-
- def template_file_name
- "associations"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- def each_belongs_to_filer
- @belongs_to.each {|b|
- yield b.filer
- }
- end
-
- def each_has_many_filer
- @has_many.each {|h|
- yield h.filer
- }
- end
-
- def each_has_one_filer
- @has_one.each {|h|
- yield h.filer
- }
- end
-
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ProfilerModule
- module AssociationModule
- class BelongsTo
- attr :association, :belongs_to_manifest
- def initialize association, belongs_to_manifest
- @association = association
- @belongs_to_manifest = belongs_to_manifest
- end
-
- def item
- self.profiler.item
- end
-
- def parent_model
- @belongs_to_manifest.model
- end
-
- def parent_id
- self.item.attributes[self.model_belongs_to_manifest.id_column]
- end
-
- def filer
- filer = nil
- begin
- r = self.parent_model.show(self.parent_id, self.profiler.operators)
- if r
- filer = ::Manifest::View::Filer.new self.parent_model.item_name, [r], nil, self.profiler.operators
- end
- rescue ActiveRecord::RecordNotFound, ActiveRecord::Forbidden
- end
- filer
- end
-
- def model_manifest
- ::Manifest.manifest.models[self.profiler.item_name]
- end
-
- def model_belongs_to_manifest
- self.model_manifest.associations.belongs_to[@belongs_to_manifest.model_name]
- end
-
- def profiler
- @association.profiler
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ProfilerModule
- module AssociationModule
- class HasMany
- attr :association, :has_many_manifest
- def initialize association, has_many_manifest
- @association = association
- @has_many_manifest = has_many_manifest
- end
-
- def item
- self.profiler.item
- end
-
- def has_many_model
- @has_many_manifest.model
- end
-
- def filer
- list_result = @has_many_manifest.list.open(self.profiler.operators, {:id => self.item.id, :page => 1, :page_size => 3})
- items = list_result.items
- ::Manifest::View::Filer.new self.has_many_model.item_name, items, nil, self.profiler.operators
- end
-
- def profiler
- @association.profiler
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ProfilerModule
- module AssociationModule
- class HasOne
- attr :association, :has_one_manifest
- def initialize association, has_one_manifest
- @association = association
- @has_one_manifest = has_one_manifest
- end
-
- def item
- self.profiler.item
- end
-
- def has_one_model
- @has_one_manifest.model
- end
-
- def filer
- list_result = @has_one_manifest.list.open(self.profiler.operators, {:id => self.item.id})
- items = list_result.items
- ::Manifest::View::Filer.new self.has_one_model.item_name, items, nil, self.profiler.operators
- end
-
- def profiler
- @association.profiler
- end
-
- end
- end
- end
- end
-end
+++ /dev/null
-module Manifest
- module View
- module ProfilerModule
- class Column
- attr :profiler, :column_name
- def initialize profiler, column_name
- @profiler = profiler
- @column_name = column_name
- end
-
- def label
- self.item.class.human_attribute_name(@column_name)
- end
-
- def value
- self.item.attributes[@column_name]
- end
-
- def note
- end
-
- def date?
- case model_attribute_manifest.type
- when 'datetime'
- if self.value
- true
- else
- false
- end
- else
- false
- end
- end
-
- def note?
- if self.model_attribute_source_manifest
- case self.model_attribute_source_manifest.type
- when 'magic_number'
- true
- when 'model'
- false
- else
- false
- end
- else
- false
- end
- end
-
- def select_item_name
- self.model_attribute_source_manifest.select_item_name
- end
-
- def item
- @profiler.item
- end
-
- def model_manifest
- ::Manifest.manifest.models[@profiler.item_name]
- end
-
- def model_attribute_manifest
- self.model_manifest.attributes[@column_name]
- end
-
- def model_attribute_source_manifest
- self.model_attribute_manifest.source
- end
-
- def template_dir
- @profiler.template_dir
- end
-
- def template_file_name
- "column"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- def value_template_dir
- @profiler.template_dir + "column_value/"
- end
-
- def value_template_file_name
- if self.date?
- 'date'
- else
- 'default'
- end
- end
-
- def value_template_name
- self.value_template_dir + self.value_template_file_name
- end
-
- def note_template_dir
- @profiler.template_dir + "column_note/"
- end
-
- def note_template_file_name
- if self.note?
- 'default'
- else
- 'none'
- end
- end
-
- def note_template_name
- self.note_template_dir + self.note_template_file_name
- end
-
- end
- end
- end
-end
-
+++ /dev/null
-module Manifest
- module View
- module ProfilerModule
- class Header
- attr :profiler
- def initialize profiler
- @profiler = profiler
- end
-
- def filer
- ::Manifest::View::Filer.new @profiler.item_name, [@profiler.item], nil, @profiler.operators
- end
-
- end
-
- end
- end
-end
-
class Manifest
cattr_accessor :manifest
attr :system_resources, :magic_numbers,
- :controllers, :models,
- :list_groups, :profilers, :filers, :forms
+ :controllers, :models
# call me before load routes.rb
# routes.rb needs engine_resources manifest in system_resources
# ex. it's adding license_groups routes
- def initialize manifest
- @manifest = manifest || {}
- @system_resources = SystemResource.new(self, SystemResource.set_default(@manifest['system_resources']))
- @magic_numbers = @manifest['magic_numbers']
+ def initialize global_json
+ @global_json = global_json || {}
+ @system_resources = SystemResource.new(self, SystemResource.set_default(@global_json['system_resources']))
+ @magic_numbers = @global_json['magic_numbers']
end
def init
# managers can't initialize before load application.rb
return unless defined? ::Pettanr
- @controllers = Controller.manager(self, @manifest['controllers'] || {})
- @models = Model.manager(self, @manifest['models'] || {})
- @locals = @manifest['locals']
- @list_groups = ListGroup.manager(self, @locals['list_groups'] || {})
- @filers = Filer.manager(self, @locals['filers'] || {})
- @profilers = Profiler.manager(self, @locals['profilers'] || {})
- @forms = Form.base_manager(self, @locals['forms'] || {})
- @forms.merge(Form.extend_manager(self, @locals['forms'] || {}))
+ @controllers = Controller.manager(self, @global_json['controllers'] || {})
+ @models = Model.manager(self, @global_json['models'] || {})
+ end
+
+ def system_resources_init
@system_resources.init
end
Manifest.manifest
end
- def load json
- Manifest.manifest = Manifest.new json
+ def load global_json
+ Manifest.manifest = Manifest.new global_json
end
def item_name_to_model item_name
resource_model_name = source_manifest.resource_model_name
resource_list_name = source_manifest.resource_list_name
caption = source_manifest.caption_name
- list = ::Manifest::View::ListGroup.list resource_model_name, resource_list_name
+ list = Locmare::ListGroup.list resource_model_name, resource_list_name
r = list.open nil, {}
@select_items[source_manifest.select_item_name] =
r.items.map {|item| [item.attributes[caption], item.id]}
--- /dev/null
+{\r
+ "list_groups": {\r
+ "scroll": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_author": {\r
+ "type": "filter"\r
+ },\r
+ "by_panel": {\r
+ "type": "through_filter",\r
+ "args": {\r
+ "through": "scroll_panels"\r
+ }\r
+ },\r
+ "play": {\r
+ "type": "play",\r
+ "args": {\r
+ "filter_item_name": "scroll",\r
+ "filter_model_name": "scroll_panel",\r
+ "filter_key": "scroll_id"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "scroll_panel": {\r
+ "tree_name": "owner",\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_scroll": {\r
+ "type": "filter"\r
+ },\r
+ "by_panel": {\r
+ "type": "filter"\r
+ },\r
+ "by_author": {\r
+ "type": "foreign_filter",\r
+ "args": {\r
+ "tree_name": "scroll_owner"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "comic": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_author": {\r
+ "type": "filter"\r
+ }\r
+ }\r
+ },\r
+ "story": {\r
+ "tree_name": "owner",\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_comic": {\r
+ "type": "filter"\r
+ },\r
+ "by_sheet": {\r
+ "type": "through_filter",\r
+ "args": {\r
+ "through": "story_sheets"\r
+ }\r
+ },\r
+ "by_author": {\r
+ "type": "foreign_filter",\r
+ "args": {\r
+ "tree_name": "comic_owner"\r
+ }\r
+ },\r
+ "play": {\r
+ "type": "play"\r
+ }\r
+ }\r
+ },\r
+ "story_sheet": {\r
+ "tree_name": "owner",\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_story": {\r
+ "type": "filter"\r
+ },\r
+ "by_sheet": {\r
+ "type": "filter"\r
+ },\r
+ "by_author": {\r
+ "type": "foreign_filter",\r
+ "args": {\r
+ "tree_name": "comic_owner"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "sheet": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_story": {\r
+ "type": "through_filter",\r
+ "args": {\r
+ "through": "story_sheets"\r
+ }\r
+ },\r
+ "by_panel": {\r
+ "type": "through_filter",\r
+ "args": {\r
+ "through": "sheet_panels"\r
+ }\r
+ },\r
+ "by_author": {\r
+ "type": "filter"\r
+ },\r
+ "play": {\r
+ "type": "play"\r
+ }\r
+ }\r
+ },\r
+ "sheet_panel": {\r
+ "tree_name": "owner",\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_sheet": {\r
+ "type": "filter"\r
+ },\r
+ "by_panel": {\r
+ "type": "filter"\r
+ },\r
+ "by_author": {\r
+ "type": "foreign_filter",\r
+ "args": {\r
+ "tree_name": "sheet_owner"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "panel": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_scroll": {\r
+ "type": "through_filter",\r
+ "args": {\r
+ "through": "scroll_panels"\r
+ }\r
+ },\r
+ "by_sheet": {\r
+ "type": "through_filter",\r
+ "args": {\r
+ "through": "sheet_panels"\r
+ }\r
+ },\r
+ "by_author": {\r
+ "type": "filter"\r
+ },\r
+ "by_speech_balloon_template": {\r
+ "type": "through_filter"\r
+ }\r
+ }\r
+ },\r
+ "panel_picture": {\r
+ "tree_name": "owner",\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_panel": {\r
+ "type": "filter"\r
+ },\r
+ "by_author": {\r
+ "type": "foreign_filter",\r
+ "args": {\r
+ "tree_name": "panel_owner"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "speech_balloon": {\r
+ "tree_name": "owner",\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_panel": {\r
+ "type": "filter"\r
+ },\r
+ "by_speech_balloon_template": {\r
+ "type": "filter"\r
+ },\r
+ "by_author": {\r
+ "type": "foreign_filter",\r
+ "args": {\r
+ "tree_name": "panel_owner"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "speech": {\r
+ "tree_name": "owner",\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_panel": {\r
+ "type": "filter"\r
+ },\r
+ "by_speech_balloon": {\r
+ "type": "filter"\r
+ },\r
+ "by_author": {\r
+ "type": "foreign_filter",\r
+ "args": {\r
+ "tree_name": "panel_owner"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "balloon": {\r
+ "tree_name": "owner",\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "by_speech_balloon": {\r
+ "type": "filter"\r
+ },\r
+ "by_writing_format": {\r
+ "type": "filter"\r
+ },\r
+ "by_author": {\r
+ "type": "foreign_filter",\r
+ "args": {\r
+ "tree_name": "panel_owner"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "ground_picture": {\r
+ "tree_name": "owner",\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_panel": {\r
+ "type": "filter"\r
+ },\r
+ "by_author": {\r
+ "type": "foreign_filter",\r
+ "args": {\r
+ "tree_name": "panel_owner"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "ground_color": {\r
+ "tree_name": "owner",\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_panel": {\r
+ "type": "filter"\r
+ },\r
+ "by_author": {\r
+ "type": "foreign_filter",\r
+ "args": {\r
+ "tree_name": "panel_owner"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "original_picture": {\r
+ "lists": {\r
+ "private": {\r
+ "type": "private"\r
+ }\r
+ }\r
+ },\r
+ "picture": {},\r
+ "resource_picture": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "private": {\r
+ "type": "private"\r
+ },\r
+ "by_original_picture": {\r
+ "type": "filter"\r
+ },\r
+ "by_license": {\r
+ "type": "filter"\r
+ },\r
+ "by_artist": {\r
+ "type": "filter"\r
+ }\r
+ }\r
+ },\r
+ "speech_balloon_template": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "select_items": {\r
+ "type": "system_resource"\r
+ }\r
+ }\r
+ },\r
+ "writing_format": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "select_items": {\r
+ "type": "system_resource"\r
+ },\r
+ "by_system_picture": {\r
+ "type": "filter"\r
+ }\r
+ }\r
+ },\r
+ "license_group": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "select_items": {\r
+ "type": "system_resource"\r
+ }\r
+ }\r
+ },\r
+ "license": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ },\r
+ "by_license_group": {\r
+ "type": "filter"\r
+ },\r
+ "by_system_picture": {\r
+ "type": "filter"\r
+ }\r
+ }\r
+ },\r
+ "author": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ }\r
+ }\r
+ },\r
+ "artist": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ }\r
+ }\r
+ },\r
+ "system_picture": {\r
+ "lists": {\r
+ "public": {\r
+ "type": "public"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "profilers": {\r
+ "scroll": {\r
+ "column_names": [\r
+ "title",\r
+ "description",\r
+ "visible",\r
+ "author_id"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "author"\r
+ ],\r
+ "has_many": [\r
+ "scroll_panels.by_scroll",\r
+ "panels.by_scroll"\r
+ ]\r
+ }\r
+ },\r
+ "scroll_panel": {\r
+ "column_names": [\r
+ "scroll_id",\r
+ "panel_id",\r
+ "t",\r
+ "author_id"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "scroll",\r
+ "panel"\r
+ ]\r
+ }\r
+ },\r
+ "comic": {\r
+ "column_names": [\r
+ "title",\r
+ "description",\r
+ "visible",\r
+ "author_id"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "author"\r
+ ],\r
+ "has_many": [\r
+ "stories.by_comic"\r
+ ]\r
+ }\r
+ },\r
+ "story": {\r
+ "column_names": [\r
+ "comic_id",\r
+ "title",\r
+ "description",\r
+ "t",\r
+ "visible"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "comic"\r
+ ],\r
+ "has_many": [\r
+ "story_sheets.by_story",\r
+ "sheets.by_story"\r
+ ]\r
+ }\r
+ },\r
+ "story_sheet": {\r
+ "column_names": [\r
+ "story_id",\r
+ "sheet_id",\r
+ "t",\r
+ "author_id"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "story",\r
+ "sheet"\r
+ ]\r
+ }\r
+ },\r
+ "sheet": {\r
+ "column_names": [\r
+ "caption",\r
+ "width",\r
+ "height",\r
+ "visible",\r
+ "author_id"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "author"\r
+ ],\r
+ "has_many": [\r
+ "story_sheets.by_sheet",\r
+ "stories.by_sheet",\r
+ "sheet_panels.by_sheet",\r
+ "panels.by_sheet"\r
+ ]\r
+ }\r
+ },\r
+ "sheet_panel": {\r
+ "column_names": [\r
+ "sheet_id",\r
+ "panel_id",\r
+ "x",\r
+ "y",\r
+ "z",\r
+ "t",\r
+ "author_id"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "sheet",\r
+ "panel"\r
+ ]\r
+ }\r
+ },\r
+ "panel": {\r
+ "column_names": [\r
+ "width",\r
+ "height",\r
+ "border",\r
+ "caption",\r
+ "publish",\r
+ "author_id"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "author"\r
+ ],\r
+ "has_many": [\r
+ "scroll_panels.by_panel",\r
+ "scrolls.by_panel",\r
+ "sheet_panels.by_panel",\r
+ "sheets.by_panel",\r
+ "panel_pictures.by_panel",\r
+ "speech_balloons.by_panel",\r
+ "ground_pictures.by_panel",\r
+ "ground_colors.by_panel"\r
+ ]\r
+ }\r
+ },\r
+ "panel_picture": {\r
+ "column_names": [\r
+ "panel_id",\r
+ "picture_id",\r
+ "caption",\r
+ "x",\r
+ "y",\r
+ "width",\r
+ "height",\r
+ "link",\r
+ "z",\r
+ "t"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "panel"\r
+ ]\r
+ }\r
+ },\r
+ "speech_balloon": {\r
+ "column_names": [\r
+ "panel_id",\r
+ "speech_balloon_template_id",\r
+ "classname",\r
+ "z",\r
+ "t",\r
+ "settings",\r
+ "caption"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "panel"\r
+ ],\r
+ "has_one": [\r
+ "balloon.by_speech_balloon",\r
+ "speech.by_speech_balloon"\r
+ ]\r
+ }\r
+ },\r
+ "speech": {\r
+ "column_names": [\r
+ "speech_balloon_id",\r
+ "writing_format_id",\r
+ "content",\r
+ "font_size",\r
+ "text_align",\r
+ "fore_color",\r
+ "x",\r
+ "y",\r
+ "width",\r
+ "height",\r
+ "quotes",\r
+ "settings"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "speech_balloon",\r
+ "writing_format"\r
+ ]\r
+ }\r
+ },\r
+ "balloon": {\r
+ "column_names": [\r
+ "speech_balloon_id",\r
+ "system_picture_id",\r
+ "x",\r
+ "y",\r
+ "width",\r
+ "height",\r
+ "r",\r
+ "settings"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "speech_balloon",\r
+ "system_picture"\r
+ ]\r
+ }\r
+ },\r
+ "ground_picture": {\r
+ "column_names": [\r
+ "panel_id",\r
+ "picture_id",\r
+ "caption",\r
+ "repeat",\r
+ "x",\r
+ "y",\r
+ "z",\r
+ "t"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "panel"\r
+ ]\r
+ }\r
+ },\r
+ "ground_color": {\r
+ "column_names": [\r
+ "panel_id",\r
+ "caption",\r
+ "code",\r
+ "orientation",\r
+ "xy",\r
+ "wh",\r
+ "z",\r
+ "t"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "panel"\r
+ ]\r
+ }\r
+ },\r
+ "original_picture": {\r
+ "column_names": [\r
+ "ext",\r
+ "width",\r
+ "height",\r
+ "filesize",\r
+ "artist_id",\r
+ "md5",\r
+ "uploaded_at",\r
+ "published_at",\r
+ "stopped_at"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "artist"\r
+ ],\r
+ "has_one": [\r
+ "resource_picture.by_original_picture"\r
+ ]\r
+ }\r
+ },\r
+ "picture": {\r
+ "column_names": [\r
+ "original_picture_id",\r
+ "revision",\r
+ "ext",\r
+ "width",\r
+ "height",\r
+ "filesize",\r
+ "artist_id",\r
+ "license_id",\r
+ "md5",\r
+ "artist_name",\r
+ "credit",\r
+ "settings",\r
+ "classname"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "license",\r
+ "artist"\r
+ ]\r
+ }\r
+ },\r
+ "resource_picture": {\r
+ "column_names": [\r
+ "original_picture_id",\r
+ "revision",\r
+ "ext",\r
+ "width",\r
+ "height",\r
+ "filesize",\r
+ "artist_id",\r
+ "license_id",\r
+ "md5",\r
+ "artist_name",\r
+ "credit",\r
+ "settings",\r
+ "picture_id",\r
+ "classname"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "original_picture",\r
+ "license",\r
+ "artist"\r
+ ]\r
+ }\r
+ },\r
+ "speech_balloon_template": {\r
+ "column_names": [\r
+ "name",\r
+ "classname",\r
+ "caption",\r
+ "t",\r
+ "system_picture_id",\r
+ "settings"\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
+ "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
+ "associations": {\r
+ "has_many": [\r
+ "licenses.by_license_group"\r
+ ]\r
+ }\r
+ },\r
+ "license": {\r
+ "column_names": [\r
+ "license_group_id",\r
+ "name",\r
+ "caption",\r
+ "system_picture_id",\r
+ "url",\r
+ "settings",\r
+ "credit_pictures"\r
+ ],\r
+ "associations": {\r
+ "belongs_to": [\r
+ "license_group",\r
+ "system_picture"\r
+ ],\r
+ "has_many": [\r
+ "resource_pictures.by_license"\r
+ ]\r
+ }\r
+ },\r
+ "author": {\r
+ "column_names": [\r
+ "name",\r
+ "user_id"\r
+ ],\r
+ "associations": {\r
+ "has_many": [\r
+ "scrolls.by_author",\r
+ "scroll_panels.by_author",\r
+ "comics.by_author",\r
+ "stories.by_author",\r
+ "sheets.by_author",\r
+ "sheet_panels.by_author",\r
+ "panels.by_author",\r
+ "panel_pictures.by_author",\r
+ "speech_balloons.by_author",\r
+ "balloons.by_author",\r
+ "speeches.by_author",\r
+ "ground_pictures.by_author",\r
+ "ground_colors.by_author"\r
+ ]\r
+ }\r
+ },\r
+ "artist": {\r
+ "column_names": [\r
+ "name",\r
+ "author_id"\r
+ ],\r
+ "associations": {\r
+ "has_many": [\r
+ "resource_pictures.by_artist"\r
+ ]\r
+ }\r
+ },\r
+ "system_picture": {\r
+ "column_names": [\r
+ "ext",\r
+ "width",\r
+ "height",\r
+ "filesize",\r
+ "md5"\r
+ ],\r
+ "associations": {\r
+ "has_many": [\r
+ "licenses.by_system_picture"\r
+ ]\r
+ }\r
+ }\r
+ },\r
+ "filers": {\r
+ "scroll": {\r
+ "symbol": {},\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "column",\r
+ "args": {\r
+ "column_name": "title"\r
+ }\r
+ },\r
+ "link": {\r
+ "type": "action",\r
+ "args": {\r
+ "action_name": "play"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {}\r
+ },\r
+ "scroll_panel": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "link": {\r
+ "type": "none"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "none"\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "comic": {\r
+ "symbol": {},\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "column",\r
+ "args": {\r
+ "column_name": "title"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {}\r
+ },\r
+ "story": {\r
+ "symbol": {},\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "method",\r
+ "args": {\r
+ "method_name": "title_with_t"\r
+ }\r
+ },\r
+ "link": {\r
+ "type": "action",\r
+ "args": {\r
+ "action_name": "play"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {}\r
+ },\r
+ "story_sheet": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "link": {\r
+ "type": "none"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "none"\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "sheet": {\r
+ "symbol": {},\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {},\r
+ "link": {\r
+ "type": "action",\r
+ "args": {\r
+ "action_name": "play"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {}\r
+ },\r
+ "sheet_panel": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "link": {\r
+ "type": "none"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "none"\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "panel": {\r
+ "symbol": {},\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "link": {\r
+ "type": "none"\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {}\r
+ },\r
+ "panel_picture": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "picture"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "link": {\r
+ "type": "none"\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "speech_balloon": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "picture"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "method",\r
+ "args": {\r
+ "method_name": "plain_scenario"\r
+ }\r
+ },\r
+ "link": {\r
+ "type": "none"\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "speech": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "picture"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "column",\r
+ "args": {\r
+ "column_name": "content"\r
+ }\r
+ },\r
+ "link": {\r
+ "type": "none"\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "balloon": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "picture"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "none"\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "ground_picture": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "picture"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "link": {\r
+ "type": "none"\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "ground_color": {\r
+ "symbol": {\r
+ "type": "template",\r
+ "args": {\r
+ "template_name": "symbol"\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "link": {\r
+ "type": "none"\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "original_picture": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "picture"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "method",\r
+ "args": {\r
+ "method_name": "revision"\r
+ }\r
+ },\r
+ "link": {\r
+ "type": "action",\r
+ "args": {\r
+ "action_name": "history"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "template",\r
+ "args": {\r
+ "template_name": "publish"\r
+ }\r
+ }\r
+ },\r
+ "picture": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "picture"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "column",\r
+ "args": {\r
+ "column_name": "revision"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "resource_picture": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "picture"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "none"\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "speech_balloon_template": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "picture"\r
+ }\r
+ }\r
+ },\r
+ "caption": {},\r
+ "summary": {\r
+ "type": "none"\r
+ },\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "writing_format": {\r
+ "symbol": {},\r
+ "caption": {},\r
+ "summary": {\r
+ "type": "none"\r
+ },\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "license_group": {\r
+ "symbol": {},\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "link": {\r
+ "type": "url_column",\r
+ "args": {\r
+ "column_name": "url"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "summary": {\r
+ "type": "none"\r
+ },\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "license": {\r
+ "symbol": {},\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "method",\r
+ "args": {\r
+ "method_name": "caption_with_group"\r
+ }\r
+ },\r
+ "link": {\r
+ "type": "url_column",\r
+ "args": {\r
+ "column_name": "url"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ },\r
+ "author": {\r
+ "symbol": {},\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "column",\r
+ "args": {\r
+ "column_name": "name"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "account"\r
+ }\r
+ },\r
+ "artist": {\r
+ "symbol": {},\r
+ "caption": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "column",\r
+ "args": {\r
+ "column_name": "name"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "summary": {},\r
+ "edit": {\r
+ "type": "account"\r
+ }\r
+ },\r
+ "system_picture": {\r
+ "symbol": {\r
+ "type": "default",\r
+ "args": {\r
+ "face": {\r
+ "type": "picture"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "type": "none"\r
+ },\r
+ "summary": {\r
+ "type": "none"\r
+ },\r
+ "edit": {\r
+ "type": "none"\r
+ }\r
+ }\r
+ },\r
+ "forms": {\r
+ "base": {\r
+ "scroll": {\r
+ "fields": {\r
+ "title": {\r
+ "args": {\r
+ "label": {\r
+ "args": {\r
+ "row_break": true\r
+ }\r
+ },\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "description": {\r
+ "args": {\r
+ "label": {\r
+ "args": {\r
+ "row_break": true\r
+ }\r
+ },\r
+ "tag": {\r
+ "type": "text_area"\r
+ }\r
+ }\r
+ },\r
+ "visible": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "select"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "author_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "title",\r
+ "description",\r
+ "visible",\r
+ "id",\r
+ "author_id"\r
+ ]\r
+ },\r
+ "scroll_panel": {\r
+ "fields": {\r
+ "scroll_id": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "panel_id": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "t": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "scroll_id",\r
+ "panel_id",\r
+ "t",\r
+ "id"\r
+ ]\r
+ },\r
+ "comic": {\r
+ "fields": {\r
+ "title": {\r
+ "args": {\r
+ "label": {\r
+ "args": {\r
+ "row_break": true\r
+ }\r
+ },\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "description": {\r
+ "args": {\r
+ "label": {\r
+ "args": {\r
+ "row_break": true\r
+ }\r
+ },\r
+ "tag": {\r
+ "type": "text_area"\r
+ }\r
+ }\r
+ },\r
+ "visible": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "select"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "author_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "title",\r
+ "description",\r
+ "visible",\r
+ "id",\r
+ "author_id"\r
+ ]\r
+ },\r
+ "story": {\r
+ "fields": {\r
+ "comic_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "title": {\r
+ "args": {\r
+ "label": {\r
+ "args": {\r
+ "row_break": true\r
+ }\r
+ },\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "description": {\r
+ "args": {\r
+ "label": {\r
+ "args": {\r
+ "row_break": true\r
+ }\r
+ },\r
+ "tag": {\r
+ "type": "text_area"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "visible": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "select"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "t": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "author_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "comic_id",\r
+ "title",\r
+ "description",\r
+ "visible",\r
+ "t",\r
+ "id",\r
+ "author_id"\r
+ ]\r
+ },\r
+ "story_sheet": {\r
+ "fields": {\r
+ "story_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "sheet_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "t": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "story_id",\r
+ "sheet_id",\r
+ "t",\r
+ "id"\r
+ ]\r
+ },\r
+ "sheet": {\r
+ "fields": {\r
+ "caption": {\r
+ "args": {\r
+ "label": {\r
+ "args": {\r
+ "row_break": true\r
+ }\r
+ },\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "width": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "height": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "visible": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "select"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "author_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "caption",\r
+ "width",\r
+ "height",\r
+ "visible",\r
+ "id",\r
+ "author_id"\r
+ ]\r
+ },\r
+ "sheet_panel": {\r
+ "fields": {\r
+ "sheet_id": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "panel_id": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "x": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "y": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "z": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "t": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "sheet_id",\r
+ "panel_id",\r
+ "x",\r
+ "y",\r
+ "z",\r
+ "t",\r
+ "id"\r
+ ]\r
+ },\r
+ "panel": {\r
+ "fields": {\r
+ "caption": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "width": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "height": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "border": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "publish": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "select"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "author_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "caption",\r
+ "width",\r
+ "height",\r
+ "border",\r
+ "publish",\r
+ "id",\r
+ "author_id"\r
+ ]\r
+ },\r
+ "panel_picture": {\r
+ "fields": {\r
+ "caption": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "x": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "y": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "width": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "helpers": {\r
+ "size": {\r
+ "type": "size",\r
+ "args": {\r
+ "dom_class": "panel_picture_width_tool"\r
+ }\r
+ }\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "height": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "helpers": {\r
+ "size": {\r
+ "type": "size",\r
+ "args": {\r
+ "dom_class": "panel_picture_height_tool"\r
+ }\r
+ }\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "link": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "panel_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "picture_id": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "hidden"\r
+ },\r
+ "helpers": {\r
+ "popup": {\r
+ "type": "popup",\r
+ "args": {\r
+ "source": "pictures"\r
+ }\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "z": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "t": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "caption",\r
+ "x",\r
+ "y",\r
+ "width",\r
+ "height",\r
+ "link",\r
+ "id",\r
+ "panel_id",\r
+ "picture_id",\r
+ "z",\r
+ "t"\r
+ ]\r
+ },\r
+ "speech_balloon": {\r
+ "fields": {\r
+ "speech_balloon.id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech_balloon.panel_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech_balloon.speech_balloon_template_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech_balloon.caption": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "speech_balloon.z": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech_balloon.t": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech_balloon.classname": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech_balloon.settings": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "balloon.id": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "balloon.speech_balloon_id": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "balloon.system_picture_id": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "balloon.r": {\r
+ "type": "part",\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "helpers": {\r
+ "tail_angle": {\r
+ "type": "size",\r
+ "args": {}\r
+ }\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "balloon.x": {\r
+ "type": "part",\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "balloon.y": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {},\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "balloon.width": {\r
+ "type": "part",\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "balloon.height": {\r
+ "type": "part",\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "balloon.settings": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech.id": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech.speech_balloon_id": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech.x": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech.y": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech.width": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech.height": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "speech.writing_format_id": {\r
+ "type": "part",\r
+ "args": {\r
+ "tag": {\r
+ "type": "select"\r
+ }\r
+ }\r
+ },\r
+ "speech.font_size": {\r
+ "type": "part",\r
+ "args": {\r
+ "tag": {\r
+ "type": "select"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "speech.text_align": {\r
+ "type": "part",\r
+ "args": {\r
+ "tag": {\r
+ "type": "select"\r
+ }\r
+ }\r
+ },\r
+ "speech.quotes": {\r
+ "type": "part",\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ }\r
+ }\r
+ },\r
+ "speech.content": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "args": {\r
+ "row_break": true\r
+ }\r
+ },\r
+ "tag": {\r
+ "type": "text_area",\r
+ "args": {\r
+ "options": {\r
+ "size": "45x5"\r
+ }\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "speech.fore_color": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "row_break": true\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ },\r
+ "helpers": {\r
+ "color": {\r
+ "type": "color",\r
+ "args": {\r
+ "wrapper": "speech-fore_color-wrap"\r
+ }\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "speech.settings": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "ground_picture": {\r
+ "fields": {\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "panel_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "picture_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "repeat": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "select",\r
+ "args": {\r
+ "source": "magic_number",\r
+ "key": "ground_picture_repeat_items"\r
+ }\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "x": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "y": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "z": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "t": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "caption",\r
+ "repeat",\r
+ "x",\r
+ "y",\r
+ "z",\r
+ "t",\r
+ "id",\r
+ "panel_id",\r
+ "picture_id"\r
+ ]\r
+ },\r
+ "ground_color": {\r
+ "fields": {\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "panel_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "caption": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "code": {\r
+ "args": {\r
+ "label": {\r
+ "args": {\r
+ "row_break": true\r
+ }\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ },\r
+ "helpers": {\r
+ "color": {\r
+ "type": "color",\r
+ "args": {\r
+ "wrapper": "ground_color-code-wrap"\r
+ }\r
+ }\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "orientation": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "select"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "xy": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ }\r
+ }\r
+ },\r
+ "wh": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "z": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "t": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "id",\r
+ "panel_id",\r
+ "caption",\r
+ "code",\r
+ "orientation",\r
+ "xy",\r
+ "wh",\r
+ "z",\r
+ "t"\r
+ ]\r
+ },\r
+ "author": {\r
+ "fields": {\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "name": {\r
+ "args": {\r
+ "label": {\r
+ "args": {\r
+ "row_break": true\r
+ }\r
+ },\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "id",\r
+ "name"\r
+ ]\r
+ },\r
+ "artist": {\r
+ "fields": {\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "name": {\r
+ "args": {\r
+ "label": {\r
+ "args": {\r
+ "row_break": true\r
+ }\r
+ },\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "id",\r
+ "name"\r
+ ]\r
+ }\r
+ },\r
+ "extend": {\r
+ "CircleSpeechBalloon": {\r
+ "base": "speech_balloon",\r
+ "fields": {},\r
+ "field_names": [\r
+ "speech_balloon.caption",\r
+ "balloon.r",\r
+ "balloon.x",\r
+ "balloon.y",\r
+ "balloon.width",\r
+ "balloon.height",\r
+ "balloon.id",\r
+ "balloon.speech_balloon_id",\r
+ "balloon.system_picture_id",\r
+ "balloon.settings",\r
+ "speech.writing_format_id",\r
+ "speech.font_size",\r
+ "speech.text_align",\r
+ "speech.quotes",\r
+ "speech.content",\r
+ "speech.fore_color",\r
+ "speech.id",\r
+ "speech.speech_balloon_id",\r
+ "speech.x",\r
+ "speech.y",\r
+ "speech.width",\r
+ "speech.height",\r
+ "speech.settings",\r
+ "speech_balloon.id",\r
+ "speech_balloon.panel_id",\r
+ "speech_balloon.speech_balloon_template_id",\r
+ "speech_balloon.classname",\r
+ "speech_balloon.z",\r
+ "speech_balloon.t",\r
+ "speech_balloon.settings"\r
+ ]\r
+ },\r
+ "PlainSpeechBalloon": {\r
+ "base": "speech_balloon",\r
+ "fields": {\r
+ "balloon.r": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "speech_balloon.caption",\r
+ "balloon.r",\r
+ "balloon.x",\r
+ "balloon.y",\r
+ "balloon.width",\r
+ "balloon.height",\r
+ "balloon.id",\r
+ "balloon.speech_balloon_id",\r
+ "balloon.system_picture_id",\r
+ "balloon.settings",\r
+ "speech.writing_format_id",\r
+ "speech.font_size",\r
+ "speech.text_align",\r
+ "speech.quotes",\r
+ "speech.content",\r
+ "speech.fore_color",\r
+ "speech.id",\r
+ "speech.speech_balloon_id",\r
+ "speech.x",\r
+ "speech.y",\r
+ "speech.width",\r
+ "speech.height",\r
+ "speech.settings",\r
+ "speech_balloon.id",\r
+ "speech_balloon.panel_id",\r
+ "speech_balloon.speech_balloon_template_id",\r
+ "speech_balloon.classname",\r
+ "speech_balloon.z",\r
+ "speech_balloon.t",\r
+ "speech_balloon.settings"\r
+ ]\r
+ },\r
+ "SquareSpeechBalloon": {\r
+ "base": "speech_balloon",\r
+ "fields": {\r
+ "balloon.r": {\r
+ "type": "part",\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "speech_balloon.caption",\r
+ "balloon.r",\r
+ "balloon.x",\r
+ "balloon.y",\r
+ "balloon.width",\r
+ "balloon.height",\r
+ "balloon.id",\r
+ "balloon.speech_balloon_id",\r
+ "balloon.system_picture_id",\r
+ "balloon.settings",\r
+ "speech.writing_format_id",\r
+ "speech.font_size",\r
+ "speech.text_align",\r
+ "speech.quotes",\r
+ "speech.content",\r
+ "speech.fore_color",\r
+ "speech.id",\r
+ "speech.speech_balloon_id",\r
+ "speech.x",\r
+ "speech.y",\r
+ "speech.width",\r
+ "speech.height",\r
+ "speech.settings",\r
+ "speech_balloon.id",\r
+ "speech_balloon.panel_id",\r
+ "speech_balloon.speech_balloon_template_id",\r
+ "speech_balloon.classname",\r
+ "speech_balloon.z",\r
+ "speech_balloon.t",\r
+ "speech_balloon.settings"\r
+ ]\r
+ }\r
+ }\r
+ }\r
+}
\ No newline at end of file