list_name: 'public',\r
},\r
},\r
+ new: {\r
+ type: 'new',\r
+ },\r
+ edit: {\r
+ type: 'edit',\r
+ },\r
},\r
},\r
writing_formats: {\r
count_by_system_picture: {\r
type: 'count',\r
},\r
+ new: {\r
+ type: 'new',\r
+ },\r
+ edit: {\r
+ type: 'edit',\r
+ },\r
},\r
},\r
license_groups: {\r
list_name: 'public',\r
},\r
},\r
+ new: {\r
+ type: 'new',\r
+ },\r
+ edit: {\r
+ type: 'edit',\r
+ },\r
},\r
},\r
licenses: {\r
count_by_system_picture: {\r
type: 'count',\r
},\r
+ new: {\r
+ type: 'new',\r
+ },\r
+ edit: {\r
+ type: 'edit',\r
+ },\r
},\r
},\r
authors: {\r
type: 'none',\r
},\r
edit: {\r
- type: 'none',\r
},\r
},\r
writing_format: {\r
type: 'none',\r
},\r
edit: {\r
- type: 'none',\r
},\r
},\r
license_group: {\r
type: 'none',\r
},\r
edit: {\r
- type: 'none',\r
},\r
},\r
license: {\r
summary: {\r
},\r
edit: {\r
- type: 'none',\r
},\r
},\r
author: {\r
'z',\r
't',\r
]\r
+ },\r
+ speech_balloon_template: {\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
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ classname: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ caption: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ t: {\r
+ args: {\r
+ tag: {\r
+ type: 'number',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ system_picture_id: {\r
+ args: {\r
+ tag: {\r
+ type: 'number',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ settings: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ },\r
+ field_names: [\r
+ 'id',\r
+ 'name',\r
+ 'classname',\r
+ 'caption',\r
+ 't',\r
+ 'system_picture_id',\r
+ 'settings',\r
+ ]\r
+ },\r
+ writing_format: {\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
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ classname: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ caption: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ system_picture_id: {\r
+ args: {\r
+ tag: {\r
+ type: 'number',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ settings: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ },\r
+ field_names: [\r
+ 'id',\r
+ 'name',\r
+ 'classname',\r
+ 'caption',\r
+ 'system_picture_id',\r
+ 'settings',\r
+ ]\r
+ },\r
+ license_group: {\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
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ classname: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ caption: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ url: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ },\r
+ field_names: [\r
+ 'id',\r
+ 'name',\r
+ 'classname',\r
+ 'caption',\r
+ 'url',\r
+ ]\r
+ },\r
+ license: {\r
+ fields: {\r
+ id: {\r
+ args: {\r
+ label: {\r
+ type: 'none',\r
+ },\r
+ tag: {\r
+ type: 'hidden',\r
+ },\r
+ },\r
+ },\r
+ license_group_id: {\r
+ args: {\r
+ label: {\r
+ type: 'none',\r
+ },\r
+ tag: {\r
+ type: 'hidden',\r
+ },\r
+ },\r
+ },\r
+ license_group_classname: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ name: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ caption: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ system_picture_id: {\r
+ args: {\r
+ tag: {\r
+ type: 'number',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ url: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ license_group_settings: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ credit_picture_settings: {\r
+ args: {\r
+ tag: {\r
+ type: 'text',\r
+ },\r
+ row_break: true,\r
+ },\r
+ },\r
+ },\r
+ field_names: [\r
+ 'id',\r
+ 'license_group_id',\r
+ 'license_group_classname',\r
+ 'name',\r
+ 'caption',\r
+ 'system_picture_id',\r
+ 'url',\r
+ 'license_group_settings',\r
+ 'credit_picture_settings',\r
+ ]\r
}\r
author: {\r
fields: {\r
license_group: {\r
},\r
credit_picture: {\r
+ level: 'read',\r
+ extend_model_class_name: 'CreditPicture',\r
extend_item_name: 'credit_picture',\r
extend_column_name: 'license_group_classname',\r
},\r
#マニフェスト\r
@profilers = {\r
scroll: {\r
+ columns: {\r
+ visible: {\r
+ type: 'source',\r
+ }, \r
+ },\r
column_names: [\r
'title', \r
'description', \r
},\r
license_group_settings: {\r
type: 'extend',\r
+ args: {\r
+ boost_name: 'license_group',\r
+ },\r
}, \r
credit_picture_settings: {\r
type: 'extend',\r
+ args: {\r
+ boost_name: 'credit_picture',\r
+ },\r
}, \r
},\r
column_names: [\r
writing_formats: {\r
has_route: 0,\r
resource_items: {\r
- SimpleFormat: 'pettanr_simple_format',\r
+ PettanrSimpleFormat: 'pettanr_simple_format',\r
},\r
},\r
},\r
authenticate_user! unless @operators.resource_reader?
end
+ def authenticate_admin
+ authenticate_admin! unless @operators.admin?
+ end
+
def authenticate_author
if @operators.author
true
class LicenseGroupsController < ApplicationController
- before_filter :authenticate_admin!, :only => []
+ before_filter :authenticate_admin, :only => [:new, :create, :edit, :update, :destroy]
def self.model
LicenseGroup
list_count
end
+ def new
+ form_new
+ end
+
+ def edit
+ form_edit
+ end
+
end
before_filter :authenticate_resource_reader, :only => [
:by_license_group, :by_system_picture, :count_by_license_group, :count_by_system_picture
]
+ before_filter :authenticate_admin, :only => [:new, :create, :edit, :update, :destroy]
def self.model
License
list_count
end
+ def new
+ form_new
+ end
+
+ def edit
+ form_edit
+ end
+
end
]
before_filter :authenticate_user, :only => []
end
- before_filter :authenticate_admin!, :only => [:destroy]
+ before_filter :authenticate_admin, :only => [:new, :create, :edit, :update, :destroy]
def self.model
SpeechBalloonTemplate
list_count
end
+ def new
+ form_new
+ end
+
+ def edit
+ form_edit
+ end
+
def destroy
@speech_balloon_template = SpeechBalloonTemplate.find(params[:id])
@speech_balloon_template.destroy
before_filter :authenticate_reader, :only => [:index, :show, :count]
before_filter :authenticate_user, :only => []
end
- before_filter :authenticate_admin!, :only => [:destroy]
+ before_filter :authenticate_admin, :only => [:new, :create, :edit, :update, :destroy]
def self.model
WritingFormat
show_json_format format
end
end
-
+
def count
list_count
end
+ def new
+ form_new
+ end
+
+ def edit
+ form_edit
+ end
+
end
validates :height, :presence => true, :numericality => true, :natural_number => true
validates :r, :presence => true, :numericality => true
# validates :caption, :presence => true
- validates :speech_balloon_template_settings, :extend_balloon => true
+ validates :speech_balloon_template_settings, :boost => {:resource_name => :speech_balloon_template}
def url
'/system_pictures/' + self.system_picture.filename
#
-class License < Peta::Item
+class License < Peta::SystemResource
load_manifest
belongs_to :license_group
belongs_to :system_picture
validates :width, :presence => true, :numericality => true, :natural_number => true
validates :height, :presence => true, :numericality => true, :natural_number => true
validates :quotes, :length => {:maximum => 15}, :quotes_even => true
- validates :speech_balloon_template_settings, :extend_speech => true
+ validates :speech_balloon_template_settings, :boost => {:resource_name => :speech_balloon_template}
#validates :writing_format_settings
@@text_align_texts = ['left', 'left', 'right', 'center']
validates :speech_balloon_template_classname, :presence => true, :length => {:maximum => 50}
validates :z, :presence => true, :numericality => {:greater_than => 0}
validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0}
- validates :speech_balloon_template_settings, :extend_speech_balloon => true
+ validates :speech_balloon_template_settings, :boost => {:resource_name => :speech_balloon_template}
def self.by_author_list_includes
{
<div class="columns">
- <% profiler.columns.each do |column| %>
+ <% profiler.each_column do |column| %>
<%= render column.template_name, :column => column %>
<% end %>
</div>
--- /dev/null
+<div class="column">
+ <%= column.label %>
+ <%= render column.value_template_name, :column => column %>
+</div>
--- /dev/null
+<div class="column">
+ <%= column.label %>
+ <%= render column.value_template_name, :column => column %>
+</div>
reverse: は反転できません。
sync_vh: は縦横比を変更できません。
quotes_even: はカッコの開きと閉じを空白区切りのペアで入力してください。
- speech_balloon_extend: バリデーションに失敗しました。
- balloon_extend: バリデーションに失敗しました。
- speech_extend: バリデーションに失敗しました。
+ extend_settings: 拡張データのバリデーションに失敗しました。
template:
body: 次の項目を確認してください。
header:
url: URL
system_picture_id: マーク
license_group_settings: ライセンス拡張データ
- credit_pictures: クレジット内画像
+ credit_picture_settings: クレジット内画像
created_at: 作成
updated_at: 更新
author:
if balloon.speech_balloon_template_classname == 'noname'
balloon.speech_balloon_template_id = sbt.id
balloon.speech_balloon_template_classname = sbt.classname
- balloon.save!
+ balloon.boosts 'post'
end
+ balloon.save!
end
Speech.find(:all).each do |speech|
sbt = speech.speech_balloon.speech_balloon_template
if speech.speech_balloon_template_classname == 'noname'
speech.speech_balloon_template_id = sbt.id
speech.speech_balloon_template_classname = sbt.classname
- speech.save!
end
wf = speech.writing_format
if speech.writing_format_classname == 'noname'
speech.writing_format_classname = wf.classname
- speech.save!
end
+ speech.boosts 'post'
+ speech.save!
end
License.find(:all).each do |license|
lg = license.license_group
if license.license_group_classname == 'noname'
license.license_group_classname = lg.classname
- license.save!
end
+ license.boosts 'post'
+ license.save!
end
end
ManifestBase.require_modules "local_manifest/profiler/",
- %w|list association|
+ %w|column extend_setting list association|
module LocalManifest
class Profiler < ManifestBase::Base
include ProfilerModule
- attr :column_names, :lists, :associations
+ attr :columns, :column_names, :extend_settings, :lists, :associations
def set_default
super
+ @json['columns'] ||= {}
@json['column_names'] ||= []
+ @json['extend_settings'] ||= {}
@json['lists'] ||= {}
@json['associations'] ||= {}
+ # supply column configures
+ @json['column_names'] = ['id'] + @json['column_names'] + ['created_at', 'updated_at']
+ @json['columns']['created_at'] = {'type' => 'date'}
+ @json['columns']['updated_at'] = {'type' => 'date'}
+ @json['column_names'].each do |column_name|
+ @json['columns'][column_name] = {} unless @json['columns'][column_name]
+ end
end
def init
super
- @column_names = ['id'] + @json['column_names'] + ['created_at', 'updated_at']
- @lists = ManifestBase.load_type_name_args self, @json, 'lists', List
+ @columns = ManifestBase.load_type_name_args self, @json, 'columns', ColumnFactory
+ @column_names = @json['column_names']
+ @extend_settings = ManifestBase.load_name_values self, @json, 'extend_settings', ExtendSetting
+ @lists = ManifestBase.load_name_values self, @json, 'lists', List
@associations = ManifestBase.load_value self, @json, 'associations', Association
end
--- /dev/null
+ManifestBase.require_modules "local_manifest/profiler/column/",
+ %w|base default date source extend|
+
+module LocalManifest
+ module ProfilerModule
+ class ColumnFactory < ManifestBase::Factory
+ include ColumnModule
+
+ def self.types
+ {
+ 'default' => DefaultColumn, 'date' => DateColumn,
+ 'source' => SourceColumn, 'extend' => ExtendColumn
+ }
+ end
+
+ def self.default_type
+ 'default'
+ end
+
+ end
+ end
+
+end
+
--- /dev/null
+module LocalManifest
+ module ProfilerModule
+ module ColumnModule
+ class Base < ManifestBase::TypeNameArgs
+
+ def set_default
+ super
+ end
+
+ def init
+ super
+ end
+
+ def item_name
+ @parent.item_name
+ end
+
+ def profiler
+ @parent
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module LocalManifest
+ module ProfilerModule
+ module ColumnModule
+ class DateColumn < Base
+
+ def set_default
+ super
+ end
+
+ def init
+ super
+ end
+
+ end
+
+ end
+ end
+end
--- /dev/null
+module LocalManifest
+ module ProfilerModule
+ module ColumnModule
+ class DefaultColumn < Base
+
+ def set_default
+ super
+ end
+
+ def init
+ super
+ end
+
+ end
+
+ end
+ end
+end
--- /dev/null
+module LocalManifest
+ module ProfilerModule
+ module ColumnModule
+ class ExtendColumn < Base
+ attr :boost_name
+
+ def set_default
+ super
+ @args['boost_name'] ||= @name.gsub(/_settings/, '')
+ end
+
+ def init
+ super
+ @boost_name = @args['boost_name']
+ end
+
+ def item_manifest
+ Manifest.manifest.items[self.profiler.name]
+ end
+
+ def boost_manifest
+ self.item_manifest.boost[@boost_name]
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module LocalManifest
+ module ProfilerModule
+ module ColumnModule
+ class SourceColumn < Base
+
+ def set_default
+ super
+ end
+
+ def init
+ super
+ end
+
+ end
+
+ end
+ end
+end
--- /dev/null
+ManifestBase.require_modules "local_manifest/profiler/extend_setting/",
+ %w|column|
+
+module LocalManifest
+ module ProfilerModule
+ class ExtendSetting < ManifestBase::NameValues
+ include ExtendSettingModule
+ attr :columns, :column_names
+
+ def set_default
+ super
+ @values['columns'] ||= {}
+ @values['column_names'] ||= []
+ end
+
+ def init
+ super
+ @columns = ManifestBase.load_type_name_args self, @values, 'columns', ColumnFactory
+ @column_names = @values['column_names']
+ end
+
+ end
+ end
+end
--- /dev/null
+ManifestBase.require_modules "local_manifest/profiler/column/",
+ %w|base default|
+
+module LocalManifest
+ module ProfilerModule
+ module ExtendSettingModule
+ class ColumnFactory < ManifestBase::Factory
+ include ColumnModule
+
+ def self.types
+ {
+ 'default' => DefaultColumn
+ }
+ end
+
+ def self.default_type
+ 'default'
+ end
+
+ end
+ end
+ end
+end
+
--- /dev/null
+module LocalManifest
+ module ProfilerModule
+ module ExtendSettingModule
+ module ColumnModule
+ class Base < ManifestBase::TypeNameArgs
+
+ def set_default
+ super
+ end
+
+ def init
+ super
+ end
+
+ def item_name
+ @parent.item_name
+ end
+
+ def profiler
+ @parent
+ end
+
+ end
+ end
+ end
+ end
+end
--- /dev/null
+module LocalManifest
+ module ProfilerModule
+ module ExtendSettingModule
+ module ColumnModule
+ class DefaultColumn < Base
+
+ def set_default
+ super
+ end
+
+ def init
+ super
+ end
+
+ end
+
+ end
+ end
+ end
+end
module LocalManifest
module ProfilerModule
- class List
- attr :profiler, :my_name, :list_manifest,
- :model_name, :list_name
-
- def initialize profiler, my_name, list_manifest
- @profiler = profiler
- @my_name = my_name
- @list_manifest = list_manifest
- self.set_default
- self.init
- end
+ class List < ManifestBase::NameValues
+ attr :model_name, :list_name
def set_default
- raise "undefined model_name for profilers > #{self.profiler_name} > lists > #{@my_name}\n" unless @list_manifest['model_name']
- raise "undefined list_name for profilers > #{self.profiler_name} > lists > #{@my_name}\n" unless @list_manifest['list_name']
+ ManifestBase::alert_undefined_message "model_name", self.module_message unless @json['model_name']
+ ManifestBase::alert_undefined_message "list_name", self.module_message unless @json['list_name']
end
def init
- @model_name = list_manifest['model_name']
- @list_name = list_manifest['list_name']
+ @model_name = @json['model_name']
+ @list_name = @json['list_name']
end
def profiler_name
- @profiler.item_name
+ @parent.item_name
end
def profiler_manifest
- @profiler.profiler_manifest
+ @parent.manifest
end
end
@item = item
# no check
# return false unless self.resource.enable?
- @item.extend self.engine_extend_module
- @item.__send__ @manifest.setter_method_name, self.parsed_settings
+ if self.extendable?
+ @item.extend self.engine_extend_module
+ @item.__send__ @manifest.setter_method_name, self.parsed_settings
+ end
end
# get engine resource from system resource manifest
Object.const_get self.class_name
end
+ def extendable?
+ self.engine_module.constants.include? @manifest.extend_module_name.to_sym
+ end
+
# extend module in engine
# ex) CircleSpeechBalloon::SpeechBalloonModule
def engine_extend_module
self.engine_module.const_get @manifest.extend_model_name
end
+ def check_resource
+ @item.attributes[@manifest.foreign_key].blank? == false
+ end
+
# get system resource instance
def resource
- r = @item.__send__ @manifest.name
- raise 'resource not found' unless r
+ raise 'blank foreign_key ' + @manifest.name unless self.check_resource
+ r = @item.__send__ @manifest.resource_name
+ raise 'resource not found' + @manifest.resource_name unless r
r
end
+ # get extend instance
+ def extend_item
+ @item.__send__ @manifest.getter_method_name
+ end
+
def parsed_settings
if self.settings.blank?
{}
@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
+ @columns = {}
+ @profiler_manifest.columns.each {|name, column|
+ @columns[name] = Column.factory self, column
}
@associations = Association.new self, @profiler_manifest.associations
end
+ def each_column
+ @profiler_manifest.column_names.each {|column_name|
+ yield @columns[column_name]
+ }
+ end
+
+ def peta
+ Manifest.manifest.items[@item_name]
+ end
+
def model
::Manifest::item_name_to_model @item_name
end
+require_dependency "locmare/profiler/column/base"
+require_dependency "locmare/profiler/column/default"
+require_dependency "locmare/profiler/column/date"
+require_dependency "locmare/profiler/column/source"
+require_dependency "locmare/profiler/column/extend"
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
- if self.item.extend_column?(@column_name)
-
- else
- self.item.attributes[@column_name]
- end
- 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
+ include ColumnModule
+ @@types = {
+ 'default' => Default, 'date' => Date, 'source' => Source, 'extend' => Extend
+ }
+ def self.factory profiler, my_manifest
+ type = my_manifest.type
+ raise "undefined type for local view filers > #{profiler.item_name} > edit\n" unless type
+ my_class = @@types[type]
+ raise "undefined class for local view filers > #{profiler.item_name} > edit > #{type}\n" unless my_class
+ my_class.new(profiler, my_manifest)
end
end
--- /dev/null
+module Locmare
+ module ProfilerModule
+ module ColumnModule
+ class Base
+ attr :profiler, :column_name
+ def initialize profiler, column
+ @profiler = profiler
+ @column = column
+ @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 item
+ @profiler.item
+ end
+
+ def template_dir
+ @profiler.template_dir + "column/"
+ end
+
+ def template_file_name
+ "default"
+ 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
+ 'default'
+ end
+
+ def value_template_name
+ self.value_template_dir + self.value_template_file_name
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module ProfilerModule
+ module ColumnModule
+ class Date < Base
+
+ def template_file_name
+ "date"
+ end
+
+ def value_template_file_name
+ if self.value
+ 'date'
+ else
+ # nil value can't localize for datetime
+ 'default'
+ end
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module ProfilerModule
+ module ColumnModule
+ class Default < Base
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module ProfilerModule
+ module ColumnModule
+ class Extend < Base
+
+ def value
+ self.extend_model_name
+ end
+
+ def extend_model_name
+ self.item.boosters[@column.boost_name].model_name
+ end
+
+ def extend_item
+ self.item.boosters[@column.boost_name].extend_item
+ end
+
+ end
+ end
+ end
+end
--- /dev/null
+module Locmare
+ module ProfilerModule
+ module ColumnModule
+ class Source < Base
+
+ def select_item_name
+ self.model_attribute_source_manifest.select_item_name
+ 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_file_name
+ "source"
+ end
+
+ def note_template_dir
+ @profiler.template_dir + "column_note/"
+ end
+
+ def note_template_file_name
+ 'default'
+ end
+
+ def note_template_name
+ self.note_template_dir + self.note_template_file_name
+ end
+
+ end
+ end
+ end
+end
module Manifest
module ItemModule
class Boost < ManifestBase::NameValues
- attr :level, :extend_column_name, :settings_column_name,
+ attr :level, :resource_name, :extend_column_name, :settings_column_name,
:foreign_key, :extend_model_class_name, :extend_item_name,
:setter_method_name, :getter_method_name,
:extend_module_name
def set_default
super
@values['level'] ||= 'post'
- @values['extend_column_name'] ||= @name + '_classname'
- @values['settings_column_name'] ||= @name + '_settings'
- @values['foreign_key'] ||= @name + '_id'
+ @values['resource_name'] ||= @name
+ @values['extend_column_name'] ||= @values['resource_name'] + '_classname'
+ @values['settings_column_name'] ||= @values['resource_name'] + '_settings'
+ @values['foreign_key'] ||= @values['resource_name'] + '_id'
end
def init
module_message = ManifestBase.module_message(parent.module_names, [module_name, name])
json['type'] ||= self.default_type
type = json['type']
- alert_undefined_message 'type', module_message unless type
+ ManifestBase.alert_undefined_message 'type', module_message unless type
my_class = self.types[type]
- alert_undefined_message 'class', module_message unless my_class
+ ManifestBase.alert_undefined_message 'class', module_message unless my_class
my_class.new(parent, name, json, module_name)
end
module_message = ManifestBase.module_message(parent.module_names, [module_name])
json['type'] ||= self.default_type
type = json['type']
- alert_undefined_message 'type', module_message unless type
+ ManifestBase.alert_undefined_message 'type', module_message unless type
my_class = self.types[type]
- alert_undefined_message 'class', module_message unless my_class
+ ManifestBase.alert_undefined_message 'class', module_message unless my_class
my_class.new(parent, json, module_name)
end
raise ActiveRecord::Forbidden unless content.own?(operators)
content
end
+
# Instance Methods
def owner_model
module Peta
class Item < ActiveRecord::Base
self.abstract_class = true
+ attr :boosters
# Dynamic ClassMethods
self.plural.underscore
end
+ def self.extend_column? column_name
+ self.my_peta.extend_column? column_name
+ end
+
def self.visible_count_options
nil
end
end
def extend_column? column_name
- self.class.my_peta.extend_column? column_name
+ self.class.extend_column? column_name
end
def supply_default
}
end
+ def self.edit system_resource_id, operators
+ system_resource = self.find system_resource_id, self.show_opt
+ raise ActiveRecord::Forbidden unless system_resource.own?(operators)
+ system_resource
+ end
+
def my_engine_resource
Manifest.manifest.system_resources.engine_resources[self.item_name]
end
er.resource_items.include? self.classname
end
+ def own? operators
+ operators.admin?
+ end
+
end
end
--- /dev/null
+class BoostValidator < ActiveModel::EachValidator\r
+ def validate_each(record, attribute, value)\r
+ rec = record.boosters[options[:resource_name].to_s].extend_item\r
+ msg = options[:message] || I18n.t('activerecord.errors.messages.extend_settings')\r
+ record.errors[attribute] << msg unless rec.valid?\r
+ end\r
+end\r
+\r
+++ /dev/null
-class ExtendBalloonValidator < ActiveModel::EachValidator\r
- def validate_each(record, attribute, value)\r
- record.errors[attribute] << (options[:message] || I18n.t('activerecord.errors.messages.balloon_extend')) unless true #record.extend_balloon.valid?\r
- end\r
-end\r
-\r
+++ /dev/null
-class ExtendSpeechBalloonValidator < ActiveModel::EachValidator\r
- def validate_each(record, attribute, value)\r
- record.errors[attribute] << (options[:message] || I18n.t('activerecord.errors.messages.speech_balloon_extend')) unless record.extend_speech_balloon.valid?\r
- end\r
-end\r
-\r
+++ /dev/null
-class ExtendSpeechValidator < ActiveModel::EachValidator\r
- def validate_each(record, attribute, value)\r
- record.errors[attribute] << (options[:message] || I18n.t('activerecord.errors.messages.speech_extend')) unless true # record.extend_speech.valid?\r
- end\r
-end\r
-\r
},\r
"profilers": {\r
"scroll": {\r
+ "columns": {\r
+ "visible": {\r
+ "type": "source"\r
+ }\r
+ },\r
"column_names": [\r
"title",\r
"description",\r
"system_picture_id": {},\r
"url": {},\r
"license_group_settings": {\r
- "type": "extend"\r
+ "type": "extend",\r
+ "args": {\r
+ "parent_model_name": "panel"\r
+ }\r
},\r
"credit_picture_settings": {\r
- "type": "extend"\r
+ "type": "extend",\r
+ "args": {\r
+ "boost_name": "credit_picture"\r
+ }\r
}\r
},\r
"column_names": [\r
"summary": {\r
"type": "none"\r
},\r
- "edit": {\r
- "type": "none"\r
- }\r
+ "edit": {}\r
},\r
"writing_format": {\r
"symbol": {},\r
"summary": {\r
"type": "none"\r
},\r
- "edit": {\r
- "type": "none"\r
- }\r
+ "edit": {}\r
},\r
"license_group": {\r
"symbol": {},\r
"summary": {\r
"type": "none"\r
},\r
- "edit": {\r
- "type": "none"\r
- }\r
+ "edit": {}\r
},\r
"license": {\r
"symbol": {},\r
}\r
},\r
"summary": {},\r
- "edit": {\r
- "type": "none"\r
- }\r
+ "edit": {}\r
},\r
"author": {\r
"symbol": {},\r
"t"\r
]\r
},\r
+ "speech_balloon_template": {\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
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "classname": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "caption": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "t": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "system_picture_id": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "settings": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "id",\r
+ "name",\r
+ "classname",\r
+ "caption",\r
+ "t",\r
+ "system_picture_id",\r
+ "settings"\r
+ ]\r
+ },\r
+ "writing_format": {\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
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "classname": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "caption": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "system_picture_id": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "settings": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "id",\r
+ "name",\r
+ "classname",\r
+ "caption",\r
+ "system_picture_id",\r
+ "settings"\r
+ ]\r
+ },\r
+ "license_group": {\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
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "classname": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "caption": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "url": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "id",\r
+ "name",\r
+ "classname",\r
+ "caption",\r
+ "url"\r
+ ]\r
+ },\r
+ "license": {\r
+ "fields": {\r
+ "id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "license_group_id": {\r
+ "args": {\r
+ "label": {\r
+ "type": "none"\r
+ },\r
+ "tag": {\r
+ "type": "hidden"\r
+ }\r
+ }\r
+ },\r
+ "license_group_classname": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "name": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "caption": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "system_picture_id": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "number"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "url": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "license_group_settings": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ },\r
+ "credit_picture_settings": {\r
+ "args": {\r
+ "tag": {\r
+ "type": "text"\r
+ },\r
+ "row_break": true\r
+ }\r
+ }\r
+ },\r
+ "field_names": [\r
+ "id",\r
+ "license_group_id",\r
+ "license_group_classname",\r
+ "name",\r
+ "caption",\r
+ "system_picture_id",\r
+ "url",\r
+ "license_group_settings",\r
+ "credit_picture_settings"\r
+ ]\r
+ },\r
"author": {\r
"fields": {\r
"id": {\r
"args": {\r
"list_name": "public"\r
}\r
+ },\r
+ "new": {\r
+ "type": "new"\r
+ },\r
+ "edit": {\r
+ "type": "edit"\r
}\r
}\r
},\r
},\r
"count_by_system_picture": {\r
"type": "count"\r
+ },\r
+ "new": {\r
+ "type": "new"\r
+ },\r
+ "edit": {\r
+ "type": "edit"\r
}\r
}\r
},\r
"args": {\r
"list_name": "public"\r
}\r
+ },\r
+ "new": {\r
+ "type": "new"\r
+ },\r
+ "edit": {\r
+ "type": "edit"\r
}\r
}\r
},\r
},\r
"count_by_system_picture": {\r
"type": "count"\r
+ },\r
+ "new": {\r
+ "type": "new"\r
+ },\r
+ "edit": {\r
+ "type": "edit"\r
}\r
}\r
},\r