From: yasushiito Date: Mon, 7 Apr 2014 02:22:15 +0000 (+0900) Subject: fix profiler extend system X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=commitdiff_plain;h=a6cc2e1d02637b226e971eebe2fb8952d6410a6f fix profiler extend system --- a6cc2e1d02637b226e971eebe2fb8952d6410a6f diff --cc app/assets/javascripts/manifest/work/forms.js.coffee.erb index 80540fe5,8fafe2c0..ee5bbecc --- a/app/assets/javascripts/manifest/work/forms.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/forms.js.coffee.erb @@@ -1241,283 -1241,6 +1241,283 @@@ 'z', 't', ] + }, + speech_balloon_template: { + fields: { + id: { + args: { + label: { + type: 'none', + }, + tag: { + type: 'hidden', + }, + }, + }, + name: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + classname: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + caption: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + t: { + args: { + tag: { + type: 'number', + }, + row_break: true, + }, + }, + system_picture_id: { + args: { + tag: { + type: 'number', + }, + row_break: true, + }, + }, + settings: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + }, + field_names: [ + 'id', + 'name', + 'classname', + 'caption', + 't', + 'system_picture_id', + 'settings', + ] + }, + writing_format: { + fields: { + id: { + args: { + label: { + type: 'none', + }, + tag: { + type: 'hidden', + }, + }, + }, + name: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + classname: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + caption: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + system_picture_id: { + args: { + tag: { + type: 'number', + }, + row_break: true, + }, + }, + settings: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + }, + field_names: [ + 'id', + 'name', + 'classname', + 'caption', + 'system_picture_id', + 'settings', + ] + }, + license_group: { + fields: { + id: { + args: { + label: { + type: 'none', + }, + tag: { + type: 'hidden', + }, + }, + }, + name: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + classname: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + caption: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + url: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + }, + field_names: [ + 'id', + 'name', + 'classname', + 'caption', + 'url', + ] + }, + license: { + fields: { + id: { + args: { + label: { + type: 'none', + }, + tag: { + type: 'hidden', + }, + }, + }, + license_group_id: { + args: { + label: { + type: 'none', + }, + tag: { + type: 'hidden', + }, + }, + }, + license_group_classname: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + name: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + caption: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + system_picture_id: { + args: { + tag: { + type: 'number', + }, + row_break: true, + }, + }, + url: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + license_group_settings: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + credit_picture_settings: { + args: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + }, + field_names: [ + 'id', + 'license_group_id', + 'license_group_classname', + 'name', + 'caption', + 'system_picture_id', + 'url', - 'icense_group_settings', ++ 'license_group_settings', + 'credit_picture_settings', + ] } author: { fields: { diff --cc app/assets/javascripts/manifest/work/items.js.coffee.erb index 7f22f481,5b5b8f73..61e8b98d --- a/app/assets/javascripts/manifest/work/items.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/items.js.coffee.erb @@@ -133,6 -149,6 +149,8 @@@ license_group: { }, credit_picture: { ++ level: 'read', ++ extend_model_class_name: 'CreditPicture', extend_item_name: 'credit_picture', extend_column_name: 'license_group_classname', }, diff --cc app/assets/javascripts/manifest/work/profilers.js.coffee.erb index 24fbd529,87d8a489..be670211 --- a/app/assets/javascripts/manifest/work/profilers.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/profilers.js.coffee.erb @@@ -1,6 -1,6 +1,11 @@@ #マニフェスト @profilers = { scroll: { ++ columns: { ++ visible: { ++ type: 'source', ++ }, ++ }, column_names: [ 'title', 'description', @@@ -483,6 -491,9 +496,15 @@@ }, license_group_settings: { type: 'extend', ++ args: { ++ boost_name: 'license_group', ++ }, + }, + credit_picture_settings: { + type: 'extend', ++ args: { ++ boost_name: 'credit_picture', ++ }, }, }, column_names: [ diff --cc app/assets/javascripts/manifest/work/system_resources.js.coffee.erb index d1e51c9a,d1e51c9a..bea14ca3 --- a/app/assets/javascripts/manifest/work/system_resources.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/system_resources.js.coffee.erb @@@ -22,7 -22,7 +22,7 @@@ writing_formats: { has_route: 0, resource_items: { -- SimpleFormat: 'pettanr_simple_format', ++ PettanrSimpleFormat: 'pettanr_simple_format', }, }, }, diff --cc app/controllers/application_controller.rb index 235e0ef5,2b1f42c7..55f54d1c --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@@ -66,14 -66,10 +66,14 @@@ class ApplicationController < ActionCon authenticate_user! unless @operators.user? end - def authenticate_user - authenticate_user! unless @operators.user? + def authenticate_resource_reader + authenticate_user! unless @operators.resource_reader? end + def authenticate_admin + authenticate_admin! unless @operators.admin? + end + def authenticate_author if @operators.author true diff --cc app/views/templates/r/profiler/_columns.html.erb index 6df659a9,6df659a9..6409a73a --- a/app/views/templates/r/profiler/_columns.html.erb +++ b/app/views/templates/r/profiler/_columns.html.erb @@@ -1,5 -1,5 +1,5 @@@
-- <% profiler.columns.each do |column| %> ++ <% profiler.each_column do |column| %> <%= render column.template_name, :column => column %> <% end %>
diff --cc app/views/templates/r/profiler/column/_date.html.erb index 00000000,00000000..b5a6e276 new file mode 100644 --- /dev/null +++ b/app/views/templates/r/profiler/column/_date.html.erb @@@ -1,0 -1,0 +1,4 @@@ ++
++ <%= column.label %> ++ <%= render column.value_template_name, :column => column %> ++
diff --cc app/views/templates/r/profiler/column/_default.html.erb index 00000000,00000000..b5a6e276 new file mode 100644 --- /dev/null +++ b/app/views/templates/r/profiler/column/_default.html.erb @@@ -1,0 -1,0 +1,4 @@@ ++
++ <%= column.label %> ++ <%= render column.value_template_name, :column => column %> ++
diff --cc config/locales/pettanr.ja.yml index 9da1165f,9da1165f..e6e189f9 --- a/config/locales/pettanr.ja.yml +++ b/config/locales/pettanr.ja.yml @@@ -297,7 -297,7 +297,7 @@@ ja url: URL system_picture_id: マーク license_group_settings: ライセンス拡張データ -- credit_pictures: クレジット内画像 ++ credit_picture_settings: クレジット内画像 created_at: 作成 updated_at: 更新 author: diff --cc db/migrate/20140329222717_fix_extend_system_data.rb index 4812aa99,4812aa99..78682313 --- a/db/migrate/20140329222717_fix_extend_system_data.rb +++ b/db/migrate/20140329222717_fix_extend_system_data.rb @@@ -5,28 -5,28 +5,30 @@@ class FixExtendSystemData < ActiveRecor 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 diff --cc lib/local_manifest/profiler.rb index 301d7c56,301d7c56..c46b497e --- a/lib/local_manifest/profiler.rb +++ b/lib/local_manifest/profiler.rb @@@ -1,23 -1,23 +1,34 @@@ 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 diff --cc lib/local_manifest/profiler/column.rb index 00000000,00000000..351a47c3 new file mode 100644 --- /dev/null +++ b/lib/local_manifest/profiler/column.rb @@@ -1,0 -1,0 +1,24 @@@ ++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 ++ diff --cc lib/local_manifest/profiler/column/base.rb index 00000000,00000000..5acf55ba new file mode 100644 --- /dev/null +++ b/lib/local_manifest/profiler/column/base.rb @@@ -1,0 -1,0 +1,25 @@@ ++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 diff --cc lib/local_manifest/profiler/column/date.rb index 00000000,00000000..6ee9f422 new file mode 100644 --- /dev/null +++ b/lib/local_manifest/profiler/column/date.rb @@@ -1,0 -1,0 +1,18 @@@ ++module LocalManifest ++ module ProfilerModule ++ module ColumnModule ++ class DateColumn < Base ++ ++ def set_default ++ super ++ end ++ ++ def init ++ super ++ end ++ ++ end ++ ++ end ++ end ++end diff --cc lib/local_manifest/profiler/column/default.rb index 00000000,00000000..618f5f36 new file mode 100644 --- /dev/null +++ b/lib/local_manifest/profiler/column/default.rb @@@ -1,0 -1,0 +1,18 @@@ ++module LocalManifest ++ module ProfilerModule ++ module ColumnModule ++ class DefaultColumn < Base ++ ++ def set_default ++ super ++ end ++ ++ def init ++ super ++ end ++ ++ end ++ ++ end ++ end ++end diff --cc lib/local_manifest/profiler/column/extend.rb index 00000000,00000000..2fa1c6d8 new file mode 100644 --- /dev/null +++ b/lib/local_manifest/profiler/column/extend.rb @@@ -1,0 -1,0 +1,28 @@@ ++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 diff --cc lib/local_manifest/profiler/column/source.rb index 00000000,00000000..77ec5fa7 new file mode 100644 --- /dev/null +++ b/lib/local_manifest/profiler/column/source.rb @@@ -1,0 -1,0 +1,18 @@@ ++module LocalManifest ++ module ProfilerModule ++ module ColumnModule ++ class SourceColumn < Base ++ ++ def set_default ++ super ++ end ++ ++ def init ++ super ++ end ++ ++ end ++ ++ end ++ end ++end diff --cc lib/local_manifest/profiler/extend_setting.rb index 00000000,00000000..ddcefabe new file mode 100644 --- /dev/null +++ b/lib/local_manifest/profiler/extend_setting.rb @@@ -1,0 -1,0 +1,24 @@@ ++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 diff --cc lib/local_manifest/profiler/extend_setting/column.rb index 00000000,00000000..2d90e90a new file mode 100644 --- /dev/null +++ b/lib/local_manifest/profiler/extend_setting/column.rb @@@ -1,0 -1,0 +1,24 @@@ ++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 ++ diff --cc lib/local_manifest/profiler/extend_setting/column/base.rb index 00000000,00000000..2ed8e727 new file mode 100644 --- /dev/null +++ b/lib/local_manifest/profiler/extend_setting/column/base.rb @@@ -1,0 -1,0 +1,27 @@@ ++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 diff --cc lib/local_manifest/profiler/extend_setting/column/default.rb index 00000000,00000000..3e24c404 new file mode 100644 --- /dev/null +++ b/lib/local_manifest/profiler/extend_setting/column/default.rb @@@ -1,0 -1,0 +1,20 @@@ ++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 diff --cc lib/local_manifest/profiler/list.rb index 8fc8fcce,8fc8fcce..5b9c0a55 --- a/lib/local_manifest/profiler/list.rb +++ b/lib/local_manifest/profiler/list.rb @@@ -1,33 -1,33 +1,24 @@@ 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 diff --cc lib/locmare/booster.rb index 8399bf3e,cf2ed476..e86bf6dc --- a/lib/locmare/booster.rb +++ b/lib/locmare/booster.rb @@@ -5,18 -5,10 +5,12 @@@ module Locmar def initialize manifest, item @manifest = manifest @item = item - raise 'blank foreign_key' + @manifest.name unless self.check_resource # no check # return false unless self.resource.enable? - if extendable? - @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 - @boosted = true - end - - def boosted? - @boosted end # get engine resource from system resource manifest @@@ -53,10 -45,6 +47,10 @@@ Object.const_get self.class_name end + def extendable? - self.engine_module.constants.include? @manifest.extend_module_name ++ self.engine_module.constants.include? @manifest.extend_module_name.to_sym + end + # extend module in engine # ex) CircleSpeechBalloon::SpeechBalloonModule def engine_extend_module @@@ -69,17 -57,13 +63,23 @@@ 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? {} diff --cc lib/locmare/profiler.rb index 15426276,94627228..6f1c7387 --- a/lib/locmare/profiler.rb +++ b/lib/locmare/profiler.rb @@@ -16,12 -16,12 +16,23 @@@ module Locmar @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 diff --cc lib/locmare/profiler/column.rb index f56e8ce2,f56e8ce2..c876e84f --- a/lib/locmare/profiler/column.rb +++ b/lib/locmare/profiler/column.rb @@@ -1,117 -1,117 +1,21 @@@ ++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 diff --cc lib/locmare/profiler/column/base.rb index 00000000,00000000..71786406 new file mode 100644 --- /dev/null +++ b/lib/locmare/profiler/column/base.rb @@@ -1,0 -1,0 +1,51 @@@ ++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 diff --cc lib/locmare/profiler/column/date.rb index 00000000,00000000..fcd866e3 new file mode 100644 --- /dev/null +++ b/lib/locmare/profiler/column/date.rb @@@ -1,0 -1,0 +1,22 @@@ ++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 diff --cc lib/locmare/profiler/column/default.rb index 00000000,00000000..c6ec53d0 new file mode 100644 --- /dev/null +++ b/lib/locmare/profiler/column/default.rb @@@ -1,0 -1,0 +1,9 @@@ ++module Locmare ++ module ProfilerModule ++ module ColumnModule ++ class Default < Base ++ ++ end ++ end ++ end ++end diff --cc lib/locmare/profiler/column/extend.rb index 00000000,00000000..72637c08 new file mode 100644 --- /dev/null +++ b/lib/locmare/profiler/column/extend.rb @@@ -1,0 -1,0 +1,21 @@@ ++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 diff --cc lib/locmare/profiler/column/source.rb index 00000000,00000000..dace3815 new file mode 100644 --- /dev/null +++ b/lib/locmare/profiler/column/source.rb @@@ -1,0 -1,0 +1,41 @@@ ++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 diff --cc lib/manifest_base/factory.rb index 31599ebf,31599ebf..10b67830 --- a/lib/manifest_base/factory.rb +++ b/lib/manifest_base/factory.rb @@@ -12,9 -12,9 +12,9 @@@ module ManifestBas 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 @@@ -22,9 -22,9 +22,9 @@@ 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 diff --cc lib/peta/item.rb index 7cdead18,68025541..91bee155 --- a/lib/peta/item.rb +++ b/lib/peta/item.rb @@@ -1,6 -1,6 +1,7 @@@ module Peta class Item < ActiveRecord::Base self.abstract_class = true ++ attr :boosters # Dynamic ClassMethods @@@ -75,6 -75,6 +76,10 @@@ 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 @@@ -164,8 -164,13 +169,13 @@@ end end + def boost boost_manifest + @boosters ||= {} + @boosters[boost_manifest.name] = Locmare::Booster.new(boost_manifest, self) + end + def extend_column? column_name -- self.class.my_peta.extend_column? column_name ++ self.class.extend_column? column_name end def supply_default diff --cc lib/validators/boost_validator.rb index 40dce601,00000000..63ad5afe mode 100644,000000..100644 --- a/lib/validators/boost_validator.rb +++ b/lib/validators/boost_validator.rb @@@ -1,8 -1,0 +1,8 @@@ +class BoostValidator < ActiveModel::EachValidator + def validate_each(record, attribute, value) - resource = record.boosters[options[:resource_name].to_s].resource ++ rec = record.boosters[options[:resource_name].to_s].extend_item + msg = options[:message] || I18n.t('activerecord.errors.messages.extend_settings') - record.errors[attribute] << msg unless resource.valid? ++ record.errors[attribute] << msg unless rec.valid? + end +end + diff --cc public/local_manifest.json index d43cfb56,72c8ffaa..cad51c59 --- a/public/local_manifest.json +++ b/public/local_manifest.json @@@ -427,6 -427,6 +427,11 @@@ }, "profilers": { "scroll": { ++ "columns": { ++ "visible": { ++ "type": "source" ++ } ++ }, "column_names": [ "title", "description", @@@ -878,7 -885,10 +890,16 @@@ "system_picture_id": {}, "url": {}, "license_group_settings": { -- "type": "extend" ++ "type": "extend", ++ "args": { ++ "parent_model_name": "panel" ++ } + }, + "credit_picture_settings": { - "type": "extend" ++ "type": "extend", ++ "args": { ++ "boost_name": "credit_picture" ++ } } }, "column_names": [ @@@ -2665,283 -2683,6 +2686,283 @@@ "t" ] }, + "speech_balloon_template": { + "fields": { + "id": { + "args": { + "label": { + "type": "none" + }, + "tag": { + "type": "hidden" + } + } + }, + "name": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "classname": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "caption": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "t": { + "args": { + "tag": { + "type": "number" + }, + "row_break": true + } + }, + "system_picture_id": { + "args": { + "tag": { + "type": "number" + }, + "row_break": true + } + }, + "settings": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + } + }, + "field_names": [ + "id", + "name", + "classname", + "caption", + "t", + "system_picture_id", + "settings" + ] + }, + "writing_format": { + "fields": { + "id": { + "args": { + "label": { + "type": "none" + }, + "tag": { + "type": "hidden" + } + } + }, + "name": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "classname": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "caption": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "system_picture_id": { + "args": { + "tag": { + "type": "number" + }, + "row_break": true + } + }, + "settings": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + } + }, + "field_names": [ + "id", + "name", + "classname", + "caption", + "system_picture_id", + "settings" + ] + }, + "license_group": { + "fields": { + "id": { + "args": { + "label": { + "type": "none" + }, + "tag": { + "type": "hidden" + } + } + }, + "name": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "classname": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "caption": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "url": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + } + }, + "field_names": [ + "id", + "name", + "classname", + "caption", + "url" + ] + }, + "license": { + "fields": { + "id": { + "args": { + "label": { + "type": "none" + }, + "tag": { + "type": "hidden" + } + } + }, + "license_group_id": { + "args": { + "label": { + "type": "none" + }, + "tag": { + "type": "hidden" + } + } + }, + "license_group_classname": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "name": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "caption": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "system_picture_id": { + "args": { + "tag": { + "type": "number" + }, + "row_break": true + } + }, + "url": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "license_group_settings": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "credit_picture_settings": { + "args": { + "tag": { + "type": "text" + }, + "row_break": true + } + } + }, + "field_names": [ + "id", + "license_group_id", + "license_group_classname", + "name", + "caption", + "system_picture_id", + "url", - "icense_group_settings", ++ "license_group_settings", + "credit_picture_settings" + ] + }, "author": { "fields": { "id": {