OSDN Git Service

fix profiler extend system
authoryasushiito <yas@pen-chan.jp>
Mon, 7 Apr 2014 02:22:15 +0000 (11:22 +0900)
committeryasushiito <yas@pen-chan.jp>
Mon, 7 Apr 2014 02:22:15 +0000 (11:22 +0900)
53 files changed:
app/assets/javascripts/manifest/work/controllers.js.coffee.erb
app/assets/javascripts/manifest/work/filers.js.coffee.erb
app/assets/javascripts/manifest/work/forms.js.coffee.erb
app/assets/javascripts/manifest/work/items.js.coffee.erb
app/assets/javascripts/manifest/work/profilers.js.coffee.erb
app/assets/javascripts/manifest/work/system_resources.js.coffee.erb
app/controllers/application_controller.rb
app/controllers/license_groups_controller.rb
app/controllers/licenses_controller.rb
app/controllers/speech_balloon_templates_controller.rb
app/controllers/writing_formats_controller.rb
app/models/balloon.rb
app/models/license.rb
app/models/speech.rb
app/models/speech_balloon.rb
app/views/templates/r/profiler/_columns.html.erb
app/views/templates/r/profiler/column/_date.html.erb [new file with mode: 0644]
app/views/templates/r/profiler/column/_default.html.erb [new file with mode: 0644]
app/views/templates/r/profiler/column/_source.html.erb [moved from app/views/templates/r/profiler/_column.html.erb with 100% similarity]
config/locales/ja.yml
config/locales/pettanr.ja.yml
db/migrate/20140329222717_fix_extend_system_data.rb
lib/local_manifest/profiler.rb
lib/local_manifest/profiler/column.rb [new file with mode: 0644]
lib/local_manifest/profiler/column/base.rb [new file with mode: 0644]
lib/local_manifest/profiler/column/date.rb [new file with mode: 0644]
lib/local_manifest/profiler/column/default.rb [new file with mode: 0644]
lib/local_manifest/profiler/column/extend.rb [new file with mode: 0644]
lib/local_manifest/profiler/column/source.rb [new file with mode: 0644]
lib/local_manifest/profiler/extend_setting.rb [new file with mode: 0644]
lib/local_manifest/profiler/extend_setting/column.rb [new file with mode: 0644]
lib/local_manifest/profiler/extend_setting/column/base.rb [new file with mode: 0644]
lib/local_manifest/profiler/extend_setting/column/default.rb [new file with mode: 0644]
lib/local_manifest/profiler/list.rb
lib/locmare/booster.rb
lib/locmare/profiler.rb
lib/locmare/profiler/column.rb
lib/locmare/profiler/column/base.rb [new file with mode: 0644]
lib/locmare/profiler/column/date.rb [new file with mode: 0644]
lib/locmare/profiler/column/default.rb [new file with mode: 0644]
lib/locmare/profiler/column/extend.rb [new file with mode: 0644]
lib/locmare/profiler/column/source.rb [new file with mode: 0644]
lib/manifest/item/boost.rb
lib/manifest_base/factory.rb
lib/peta/content.rb
lib/peta/item.rb
lib/peta/system_resource.rb
lib/validators/boost_validator.rb [new file with mode: 0644]
lib/validators/extend_balloon_validator.rb [deleted file]
lib/validators/extend_speech_balloon_validator.rb [deleted file]
lib/validators/extend_speech_validator.rb [deleted file]
public/local_manifest.json
public/manifest.json

index 9316b66..58fd878 100644 (file)
           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
index 28fb5cc..97818ff 100644 (file)
       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
index 8fafe2c..ee5bbec 100644 (file)
         '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
index 5b5b8f7..61e8b98 100644 (file)
         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
index 87d8a48..be67021 100644 (file)
@@ -1,6 +1,11 @@
 #マニフェスト\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
index d1e51c9..bea14ca 100644 (file)
@@ -22,7 +22,7 @@
     writing_formats: {\r
       has_route: 0,\r
       resource_items: {\r
-        SimpleFormat: 'pettanr_simple_format',\r
+        PettanrSimpleFormat: 'pettanr_simple_format',\r
       },\r
     },\r
   },\r
index 2b1f42c..55f54d1 100644 (file)
@@ -70,6 +70,10 @@ class ApplicationController < ActionController::Base
     authenticate_user! unless @operators.resource_reader?
   end
   
+  def authenticate_admin
+    authenticate_admin! unless @operators.admin?
+  end
+  
   def authenticate_author
     if @operators.author
       true
index 5c2aedf..9d1172f 100644 (file)
@@ -1,5 +1,5 @@
 class LicenseGroupsController < ApplicationController
-  before_filter :authenticate_admin!, :only => []
+  before_filter :authenticate_admin, :only => [:new, :create, :edit, :update, :destroy]
   
   def self.model
     LicenseGroup
@@ -28,4 +28,12 @@ class LicenseGroupsController < ApplicationController
     list_count
   end
   
+  def new
+    form_new
+  end
+  
+  def edit
+    form_edit
+  end
+  
 end
index 4051865..8456d6e 100644 (file)
@@ -2,6 +2,7 @@ class LicensesController < ApplicationController
   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
@@ -55,4 +56,12 @@ class LicensesController < ApplicationController
     list_count
   end
   
+  def new
+    form_new
+  end
+  
+  def edit
+    form_edit
+  end
+  
 end
index 61be851..848dfe9 100644 (file)
@@ -7,7 +7,7 @@ class SpeechBalloonTemplatesController < ApplicationController
     ]
     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
@@ -44,6 +44,14 @@ class SpeechBalloonTemplatesController < ApplicationController
     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
index 520cf61..5e72055 100644 (file)
@@ -5,7 +5,7 @@ class WritingFormatsController < ApplicationController
     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
@@ -29,9 +29,17 @@ class WritingFormatsController < ApplicationController
       show_json_format format
     end
   end
-
+  
   def count
     list_count
   end
   
+  def new
+    form_new
+  end
+  
+  def edit
+    form_edit
+  end
+  
 end
index 74c4122..279d9f8 100644 (file)
@@ -14,7 +14,7 @@ class Balloon < Peta::Element
   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
index 9aeef97..abb7c2c 100644 (file)
@@ -1,5 +1,5 @@
 #
-class License < Peta::Item
+class License < Peta::SystemResource
   load_manifest
   belongs_to :license_group
   belongs_to :system_picture
index acd0a83..963031c 100644 (file)
@@ -17,7 +17,7 @@ class Speech < Peta::Element
   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']
index 58c5654..deeb5fa 100644 (file)
@@ -13,7 +13,7 @@ class SpeechBalloon < Peta::Element
   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
     {
index 6df659a..6409a73 100644 (file)
@@ -1,5 +1,5 @@
 <div class="columns">
-  <% profiler.columns.each do |column| %>
+  <% profiler.each_column do |column| %>
     <%= render column.template_name, :column => column %>
   <% end %>
 </div>
diff --git a/app/views/templates/r/profiler/column/_date.html.erb b/app/views/templates/r/profiler/column/_date.html.erb
new file mode 100644 (file)
index 0000000..b5a6e27
--- /dev/null
@@ -0,0 +1,4 @@
+<div class="column">
+  <%= column.label %>
+  <%= render column.value_template_name, :column => column %>
+</div>
diff --git a/app/views/templates/r/profiler/column/_default.html.erb b/app/views/templates/r/profiler/column/_default.html.erb
new file mode 100644 (file)
index 0000000..b5a6e27
--- /dev/null
@@ -0,0 +1,4 @@
+<div class="column">
+  <%= column.label %>
+  <%= render column.value_template_name, :column => column %>
+</div>
index 9ebb7de..8f3cd85 100644 (file)
@@ -127,9 +127,7 @@ ja:
       reverse: は反転できません。
       sync_vh: は縦横比を変更できません。
       quotes_even: はカッコの開きと閉じを空白区切りのペアで入力してください。
-      speech_balloon_extend: バリデーションに失敗しました。
-      balloon_extend: バリデーションに失敗しました。
-      speech_extend: バリデーションに失敗しました。
+      extend_settings: 拡張データのバリデーションに失敗しました。
     template:
       body: 次の項目を確認してください。
       header:
index 9da1165..e6e189f 100644 (file)
@@ -297,7 +297,7 @@ ja:
         url: URL
         system_picture_id: マーク
         license_group_settings: ライセンス拡張データ
-        credit_pictures: クレジット内画像
+        credit_picture_settings: クレジット内画像
         created_at: 作成
         updated_at: 更新
       author:
index 4812aa9..7868231 100644 (file)
@@ -5,28 +5,30 @@ class FixExtendSystemData < ActiveRecord::Migration
       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
 
index 301d7c5..c46b497 100644 (file)
@@ -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 --git a/lib/local_manifest/profiler/column.rb b/lib/local_manifest/profiler/column.rb
new file mode 100644 (file)
index 0000000..351a47c
--- /dev/null
@@ -0,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 --git a/lib/local_manifest/profiler/column/base.rb b/lib/local_manifest/profiler/column/base.rb
new file mode 100644 (file)
index 0000000..5acf55b
--- /dev/null
@@ -0,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 --git a/lib/local_manifest/profiler/column/date.rb b/lib/local_manifest/profiler/column/date.rb
new file mode 100644 (file)
index 0000000..6ee9f42
--- /dev/null
@@ -0,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 --git a/lib/local_manifest/profiler/column/default.rb b/lib/local_manifest/profiler/column/default.rb
new file mode 100644 (file)
index 0000000..618f5f3
--- /dev/null
@@ -0,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 --git a/lib/local_manifest/profiler/column/extend.rb b/lib/local_manifest/profiler/column/extend.rb
new file mode 100644 (file)
index 0000000..2fa1c6d
--- /dev/null
@@ -0,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 --git a/lib/local_manifest/profiler/column/source.rb b/lib/local_manifest/profiler/column/source.rb
new file mode 100644 (file)
index 0000000..77ec5fa
--- /dev/null
@@ -0,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 --git a/lib/local_manifest/profiler/extend_setting.rb b/lib/local_manifest/profiler/extend_setting.rb
new file mode 100644 (file)
index 0000000..ddcefab
--- /dev/null
@@ -0,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 --git a/lib/local_manifest/profiler/extend_setting/column.rb b/lib/local_manifest/profiler/extend_setting/column.rb
new file mode 100644 (file)
index 0000000..2d90e90
--- /dev/null
@@ -0,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 --git a/lib/local_manifest/profiler/extend_setting/column/base.rb b/lib/local_manifest/profiler/extend_setting/column/base.rb
new file mode 100644 (file)
index 0000000..2ed8e72
--- /dev/null
@@ -0,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 --git a/lib/local_manifest/profiler/extend_setting/column/default.rb b/lib/local_manifest/profiler/extend_setting/column/default.rb
new file mode 100644 (file)
index 0000000..3e24c40
--- /dev/null
@@ -0,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
index 8fc8fcc..5b9c0a5 100644 (file)
@@ -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
index cf2ed47..e86bf6d 100644 (file)
@@ -7,8 +7,10 @@ module Locmare
       @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
@@ -45,6 +47,10 @@ module Locmare
       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
@@ -57,13 +63,23 @@ module Locmare
       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?
         {}
index 9462722..6f1c738 100644 (file)
@@ -16,12 +16,23 @@ module Locmare
       @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
index f56e8ce..c876e84 100644 (file)
+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 --git a/lib/locmare/profiler/column/base.rb b/lib/locmare/profiler/column/base.rb
new file mode 100644 (file)
index 0000000..7178640
--- /dev/null
@@ -0,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 --git a/lib/locmare/profiler/column/date.rb b/lib/locmare/profiler/column/date.rb
new file mode 100644 (file)
index 0000000..fcd866e
--- /dev/null
@@ -0,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 --git a/lib/locmare/profiler/column/default.rb b/lib/locmare/profiler/column/default.rb
new file mode 100644 (file)
index 0000000..c6ec53d
--- /dev/null
@@ -0,0 +1,9 @@
+module Locmare
+  module ProfilerModule
+    module ColumnModule
+      class Default < Base
+        
+      end
+    end
+  end
+end
diff --git a/lib/locmare/profiler/column/extend.rb b/lib/locmare/profiler/column/extend.rb
new file mode 100644 (file)
index 0000000..72637c0
--- /dev/null
@@ -0,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 --git a/lib/locmare/profiler/column/source.rb b/lib/locmare/profiler/column/source.rb
new file mode 100644 (file)
index 0000000..dace381
--- /dev/null
@@ -0,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
index a9336de..e3c1cb6 100644 (file)
@@ -1,7 +1,7 @@
 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
@@ -9,9 +9,10 @@ module Manifest
       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
index 31599eb..10b6783 100644 (file)
@@ -12,9 +12,9 @@ module ManifestBase
       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 @@ module ManifestBase
       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
     
index f544a63..1fdc473 100644 (file)
@@ -63,6 +63,7 @@ module Peta
       raise ActiveRecord::Forbidden unless content.own?(operators)
       content
     end
+    
     # Instance Methods
     
     def owner_model
index 6802554..91bee15 100644 (file)
@@ -1,6 +1,7 @@
 module Peta
   class Item < ActiveRecord::Base
     self.abstract_class = true
+    attr :boosters
     
     # Dynamic ClassMethods
     
@@ -75,6 +76,10 @@ module Peta
       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
@@ -170,7 +175,7 @@ module Peta
     end
     
     def extend_column? column_name
-      self.class.my_peta.extend_column? column_name
+      self.class.extend_column? column_name
     end
     
     def supply_default
index f425144..b1ca3bd 100644 (file)
@@ -12,6 +12,12 @@ module Peta
       }
     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
@@ -21,5 +27,9 @@ module Peta
       er.resource_items.include? self.classname
     end
     
+    def own? operators
+      operators.admin?
+    end
+    
   end
 end
diff --git a/lib/validators/boost_validator.rb b/lib/validators/boost_validator.rb
new file mode 100644 (file)
index 0000000..63ad5af
--- /dev/null
@@ -0,0 +1,8 @@
+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
diff --git a/lib/validators/extend_balloon_validator.rb b/lib/validators/extend_balloon_validator.rb
deleted file mode 100644 (file)
index 7b9574b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-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
diff --git a/lib/validators/extend_speech_balloon_validator.rb b/lib/validators/extend_speech_balloon_validator.rb
deleted file mode 100644 (file)
index b4e21d2..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-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
diff --git a/lib/validators/extend_speech_validator.rb b/lib/validators/extend_speech_validator.rb
deleted file mode 100644 (file)
index 755c0e0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-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
index 72c8ffa..cad51c5 100644 (file)
   },\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
index 96f22b4..ea69885 100644 (file)
           "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