From 5d4a84528ce84792699f6987262d3b8ac5453b52 Mon Sep 17 00:00:00 2001 From: yasushiito Date: Sun, 20 Apr 2014 11:08:35 +0900 Subject: [PATCH] fix form extend --- .../javascripts/manifest/work/forms.js.coffee.erb | 49 +- .../javascripts/manifest/work/items.js.coffee.erb | 6 + .../javascripts/manifest/work/models.js.coffee.erb | 669 ++++++++++++++++++++ .../manifest/work/profilers.js.coffee.erb | 208 ++++++- app/controllers/licenses_controller.rb | 46 ++ app/views/templates/r/form/_extend_form.html.erb | 4 +- config/locales/pettanr.ja.yml | 2 + lib/local_manifest/form/field.rb | 7 +- lib/locmare/booster.rb | 13 +- lib/locmare/form.rb | 8 +- lib/locmare/form/extend_field.rb | 2 +- lib/locmare/form/field.rb | 2 +- lib/manifest/item/boost.rb | 9 +- lib/peta/item.rb | 4 +- public/local_manifest.json | 246 +++++++- public/manifest.json | 671 +++++++++++++++++++++ 16 files changed, 1883 insertions(+), 63 deletions(-) diff --git a/app/assets/javascripts/manifest/work/forms.js.coffee.erb b/app/assets/javascripts/manifest/work/forms.js.coffee.erb index 9df9ebc7..f01e5a7e 100644 --- a/app/assets/javascripts/manifest/work/forms.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/forms.js.coffee.erb @@ -1245,11 +1245,11 @@ row_break: true, }, license_group_settings: { - boost_name: 'license_group', + # boost_name: 'license_group', row_break: true, }, credit_picture_settings: { - boost_name: 'credit_picture', + # boost_name: 'credit_picture', row_break: true, }, }, @@ -1492,7 +1492,7 @@ 'open', 'commercial', 'official', - 'attribution:', + 'attribution', 'derive', 'thumbnail', 'gif_convert', @@ -1583,18 +1583,25 @@ }, row_break: true, }, + trackback: { + tag: { + type: 'number', + }, + row_break: true, + }, }, field_names: [ 'open', 'commercial', 'official', - 'attribution:', + 'attribution', 'derive', 'thumbnail', 'gif_convert', 'reverse', 'sync_vh', 'overlap', + 'trackback', ], }, pettanr_pettan_protected_v01_licenses_credit_picture: { @@ -1679,18 +1686,25 @@ }, row_break: true, }, + trackback: { + tag: { + type: 'number', + }, + row_break: true, + }, }, field_names: [ 'open', 'commercial', 'official', - 'attribution:', + 'attribution', 'derive', 'thumbnail', 'gif_convert', 'reverse', 'sync_vh', 'overlap', + 'trackback', ], }, pettanr_pettan_public_v01_licenses_credit_picture: { @@ -1701,16 +1715,9 @@ }, row_break: true, }, - source_url_off_btn_id: { - tag: { - type: 'number', - }, - row_break: true, - }, }, field_names: [ 'source_url_btn_id', - 'source_url_off_btn_id', ], }, pettanr_public_domain_v01_licenses_license: { @@ -1775,18 +1782,25 @@ }, row_break: true, }, + trackback: { + tag: { + type: 'number', + }, + row_break: true, + }, }, field_names: [ 'open', 'commercial', 'official', - 'attribution:', + 'attribution', 'derive', 'thumbnail', 'gif_convert', 'reverse', 'sync_vh', 'overlap', + 'trackback', ], }, pettanr_public_domain_v01_licenses_credit_picture: { @@ -1871,18 +1885,25 @@ }, row_break: true, }, + trackback: { + tag: { + type: 'number', + }, + row_break: true, + }, }, field_names: [ 'open', 'commercial', 'official', - 'attribution:', + 'attribution', 'derive', 'thumbnail', 'gif_convert', 'reverse', 'sync_vh', 'overlap', + 'trackback', ], }, pettanr_unknown_v01_licenses_credit_picture: { diff --git a/app/assets/javascripts/manifest/work/items.js.coffee.erb b/app/assets/javascripts/manifest/work/items.js.coffee.erb index 2f99bda4..39ebab39 100644 --- a/app/assets/javascripts/manifest/work/items.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/items.js.coffee.erb @@ -130,6 +130,8 @@ # expand license_group_settings license_group: { resource_name: 'license', + engine_resource_name: 'license_groups', + engine_resource_extend_column_name: 'license_group_classname', extend_column_name: 'license_group_classname', settings_column_name: 'license_group_settings', extend_model_class_name: 'License', @@ -138,6 +140,8 @@ # expand license_settings license: { level: 'read', + engine_resource_name: 'license_groups', + engine_resource_extend_column_name: 'license_group_classname', extend_column_name: 'license_group_classname', extend_model_class_name: 'Attribute', extend_item_name: 'attribute', @@ -145,6 +149,8 @@ credit_picture: { level: 'read', resource_name: 'license', + engine_resource_name: 'license_groups', + engine_resource_extend_column_name: 'license_group_classname', extend_column_name: 'license_group_classname', settings_column_name: 'credit_picture_settings', extend_model_class_name: 'CreditPicture', diff --git a/app/assets/javascripts/manifest/work/models.js.coffee.erb b/app/assets/javascripts/manifest/work/models.js.coffee.erb index 317a3245..206aedad 100644 --- a/app/assets/javascripts/manifest/work/models.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/models.js.coffee.erb @@ -1599,6 +1599,142 @@ }, }, }, + pettanr_creative_commons_v30_licenses_license: { + attributes: { + open: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + commercial: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + official: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + attribution: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + derive: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + thumbnail: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + gif_convert: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + reverse: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + sync_vh: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + overlap: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + }, + }, + pettanr_creative_commons_v30_licenses_credit_picture: { + attributes: { + source_url_btn_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + source_url_off_btn_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + }, + }, + pettanr_creative_commons_v30_licenses_attribute: { + attributes: { + license_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + system_picture_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + artist_name: { + type: 'text', + rules : { + required: true, + } + }, + caption: { + type: 'text', + rules : { + } + }, + artist_url: { + type: 'text', + rules : { + } + }, + source_url: { + type: 'text', + rules : { + } + }, + more_permission_url: { + type: 'text', + rules : { + } + }, + }, + }, pettanr_pettan_commons_v01_licenses_license: { attributes: { open: { @@ -1700,6 +1836,539 @@ number: true, } }, + system_picture_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + artist_name: { + type: 'text', + rules : { + required: true, + } + }, + caption: { + type: 'text', + rules : { + required: true, + } + }, + sources: { + type: 'text', + rules : { + required: true, + } + }, + }, + }, + pettanr_pettan_protected_v01_licenses_license: { + attributes: { + open: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + commercial: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + official: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + attribution: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + derive: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + thumbnail: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + gif_convert: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + reverse: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + sync_vh: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + overlap: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + trackback: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + }, + }, + pettanr_pettan_protected_v01_licenses_credit_picture: { + attributes: { + source_url_btn_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + source_url_off_btn_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + }, + }, + pettanr_pettan_protected_v01_licenses_attribute: { + attributes: { + license_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + system_picture_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + artist_name: { + type: 'text', + rules : { + required: true, + } + }, + caption: { + type: 'text', + rules : { + required: true, + } + }, + sources: { + type: 'text', + rules : { + required: true, + } + }, + }, + }, + pettanr_pettan_public_v01_licenses_license: { + attributes: { + open: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + commercial: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + official: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + attribution: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + derive: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + thumbnail: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + gif_convert: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + reverse: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + sync_vh: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + overlap: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + trackback: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + }, + }, + pettanr_pettan_public_v01_licenses_credit_picture: { + attributes: { + source_url_btn_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + }, + }, + pettanr_pettan_public_v01_licenses_attribute: { + attributes: { + license_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + system_picture_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + artist_name: { + type: 'text', + rules : { + required: true, + } + }, + caption: { + type: 'text', + rules : { + required: true, + } + }, + sources: { + type: 'text', + rules : { + required: true, + } + }, + }, + }, + pettanr_public_domain_v01_licenses_license: { + attributes: { + open: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + commercial: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + official: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + attribution: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + derive: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + thumbnail: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + gif_convert: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + reverse: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + sync_vh: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + overlap: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + trackback: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + }, + }, + pettanr_public_domain_v01_licenses_credit_picture: { + attributes: { + source_url_btn_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + source_url_off_btn_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + }, + }, + pettanr_public_domain_v01_licenses_attribute: { + attributes: { + license_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + system_picture_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + artist_name: { + type: 'text', + rules : { + required: true, + } + }, + source_url: { + type: 'text', + rules : { + required: true, + } + }, + note: { + type: 'text', + rules : { + required: true, + } + }, + }, + }, + pettanr_unknown_v01_licenses_license: { + attributes: { + open: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + commercial: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + official: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + attribution: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + derive: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + thumbnail: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + gif_convert: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + reverse: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + sync_vh: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + overlap: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + trackback: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + }, + }, + pettanr_unknown_v01_licenses_credit_picture: { + attributes: { + source_url_btn_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + source_url_off_btn_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, + }, + }, + pettanr_unknown_v01_licenses_attribute: { + attributes: { + license_id: { + type: 'number', + rules : { + required: true, + number: true, + } + }, artist_name: { type: 'text', rules : { diff --git a/app/assets/javascripts/manifest/work/profilers.js.coffee.erb b/app/assets/javascripts/manifest/work/profilers.js.coffee.erb index d3ecf66c..3af686b5 100644 --- a/app/assets/javascripts/manifest/work/profilers.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/profilers.js.coffee.erb @@ -302,6 +302,17 @@ }, }, picture: { + columns: { + license_group_settings: { + type: 'extend', + }, + credit_picture_settings: { + type: 'extend', + }, + license_settings: { + type: 'extend', + }, + }, column_names: [ 'original_picture_id', 'revision', @@ -313,9 +324,10 @@ 'license_id', 'md5', 'artist_name', - 'credit', - 'settings', - 'classname', + 'license_group_settings', + 'credit_picture_settings', + 'license_settings', + 'license_group_classname', ], associations: { belongs_to: [ @@ -325,6 +337,26 @@ }, }, resource_picture: { + columns: { + license_group_settings: { + type: 'extend', + args: { + boost_name: 'license_group', + }, + }, + credit_picture_settings: { + type: 'extend', + args: { + boost_name: 'credit_picture', + }, + }, + license_settings: { + type: 'extend', + args: { + boost_name: 'license', + }, + }, + }, column_names: [ 'original_picture_id', 'revision', @@ -336,10 +368,11 @@ 'license_id', 'md5', 'artist_name', - 'credit', - 'settings', + 'license_group_settings', + 'credit_picture_settings', + 'license_settings', 'picture_id', - 'classname', + 'license_group_classname', ], associations: { belongs_to: [ @@ -484,6 +517,30 @@ 'url', ], extend_settings: { + pettanr_creative_commons_v30_licenses_license: { + columns: { + }, + column_names: [ + 'open', + 'commercial', + 'official', + 'attribution', + 'derive', + 'thumbnail', + 'gif_convert', + 'reverse', + 'sync_vh', + 'overlap', + ], + }, + pettanr_creative_commons_v30_licenses_credit_picture: { + columns: { + }, + column_names: [ + 'source_url_btn_id', + 'source_url_off_btn_id', + ], + }, pettanr_pettan_commons_v01_licenses_license: { columns: { }, @@ -491,7 +548,7 @@ 'open', 'commercial', 'official', - 'attribution:', + 'attribution', 'derive', 'thumbnail', 'gif_convert', @@ -508,6 +565,105 @@ 'source_url_off_btn_id', ], }, + pettanr_pettan_protected_v01_licenses_license: { + columns: { + }, + column_names: [ + 'open', + 'commercial', + 'official', + 'attribution', + 'derive', + 'thumbnail', + 'gif_convert', + 'reverse', + 'sync_vh', + 'overlap', + 'trackback', + ], + }, + pettanr_pettan_protected_v01_licenses_credit_picture: { + columns: { + }, + column_names: [ + 'source_url_btn_id', + 'source_url_off_btn_id', + ], + }, + pettanr_pettan_public_v01_licenses_license: { + columns: { + }, + column_names: [ + 'open', + 'commercial', + 'official', + 'attribution', + 'derive', + 'thumbnail', + 'gif_convert', + 'reverse', + 'sync_vh', + 'overlap', + 'trackback', + ], + }, + pettanr_pettan_public_v01_licenses_credit_picture: { + columns: { + }, + column_names: [ + 'source_url_btn_id', + ], + }, + pettanr_public_domain_v01_licenses_license: { + columns: { + }, + column_names: [ + 'open', + 'commercial', + 'official', + 'attribution', + 'derive', + 'thumbnail', + 'gif_convert', + 'reverse', + 'sync_vh', + 'overlap', + 'trackback', + ], + }, + pettanr_public_domain_v01_licenses_credit_picture: { + columns: { + }, + column_names: [ + 'source_url_btn_id', + 'source_url_off_btn_id', + ], + }, + pettanr_unknown_v01_licenses_license: { + columns: { + }, + column_names: [ + 'open', + 'commercial', + 'official', + 'attribution', + 'derive', + 'thumbnail', + 'gif_convert', + 'reverse', + 'sync_vh', + 'overlap', + 'trackback', + ], + }, + pettanr_unknown_v01_licenses_credit_picture: { + columns: { + }, + column_names: [ + 'source_url_btn_id', + 'source_url_off_btn_id', + ], + }, }, associations: { has_many: [ @@ -530,6 +686,44 @@ }, }, }, + extend_settings: { + pettanr_creative_commons_v30_licenses_attribute: { + columns: { + }, + column_names: [ + ], + }, + pettanr_pettan_commons_v01_licenses_attribute: { + columns: { + }, + column_names: [ + ], + }, + pettanr_pettan_protected_v01_licenses_attribute: { + columns: { + }, + column_names: [ + ], + }, + pettanr_pettan_public_v01_licenses_attribute: { + columns: { + }, + column_names: [ + ], + }, + pettanr_public_domain_v01_licenses_attribute: { + columns: { + }, + column_names: [ + ], + }, + pettanr_unknown_v01_licenses_attribute: { + columns: { + }, + column_names: [ + ], + }, + }, column_names: [ 'license_group_id', 'license_group_classname', diff --git a/app/controllers/licenses_controller.rb b/app/controllers/licenses_controller.rb index 8456d6e5..fe930713 100644 --- a/app/controllers/licenses_controller.rb +++ b/app/controllers/licenses_controller.rb @@ -64,4 +64,50 @@ class LicensesController < ApplicationController form_edit end + def create + @item = self.class.model.new + @item.supply_default + @item.attributes = params[:license] + @item.overwrite @operators + + if @item.save + respond_to do |format| + flash[:notice] = I18n.t('flash.notice.created', :model => self.class.model.model_name.human) + format.html { redirect_to @item } + format.json { render json: @item.to_json(self.class.model.show_json_opt), status: :created, location: @item } + end + else + flash[:notice] = I18n.t('flash.notice.not_created', :model => self.class.model.model_name.human) + render_new + format.html { render action: "new" } + format.json { render json: @item.errors, status: :unprocessable_entity } + end + end + + def update + @item = self.class.model.edit(params[:id], @operators) + self.class.model.fold_extend_settings params + @item.attributes = params[:license] + @item.overwrite + respond_to do |format| + if @item.save + flash[:notice] = I18n.t('flash.notice.updated', :model => self.class.model.model_name.human) + format.html { redirect_to @item } + format.json { head :ok } + else + flash[:notice] = I18n.t('flash.notice.not_updated', :model => self.class.model.model_name.human) + format.html { render action: "edit" } + format.json { render json: @item.errors, status: :unprocessable_entity } + end + end + end + + def destroy + @item = self.class.model.edit(params[:id], @operators) + respond_to do |format| + flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => self.class.model.model_name.human) + format.html { redirect_to @item } + format.json { render json: @item.errors, status: :unprocessable_entity } + end + end end diff --git a/app/views/templates/r/form/_extend_form.html.erb b/app/views/templates/r/form/_extend_form.html.erb index b9868b6f..2432c7dd 100644 --- a/app/views/templates/r/form/_extend_form.html.erb +++ b/app/views/templates/r/form/_extend_form.html.erb @@ -1,4 +1,4 @@ -<%= form_for(form.item) do |f| %> +<%= fields_for(form.field_name, form.item) do |sf| %> <%= render 'system/error_explanation', :obj => form.item %> - <%= render form.fields_template_name, :form => form, :f => f %> + <%= render form.fields_template_name, :form => form %> <% end %> diff --git a/config/locales/pettanr.ja.yml b/config/locales/pettanr.ja.yml index 05818545..a254fb1d 100644 --- a/config/locales/pettanr.ja.yml +++ b/config/locales/pettanr.ja.yml @@ -369,6 +369,8 @@ ja: provider_original_picture: created_at: 作成 updated_at: 更新 + pettanr_unknown_v01_licenses/license: + open: ライセンス picture_io: error: 画像保管庫との手続きで異常が発生しました。 select_items: diff --git a/lib/local_manifest/form/field.rb b/lib/local_manifest/form/field.rb index a6edd112..83c59d33 100644 --- a/lib/local_manifest/form/field.rb +++ b/lib/local_manifest/form/field.rb @@ -6,7 +6,7 @@ module LocalManifest class Field < ManifestBase::NameValues include FieldModule - attr :label, :tag, :helpers, :row_break + attr :label, :tag, :helpers, :row_break, :boost_name def set_default super @@ -22,16 +22,13 @@ module LocalManifest @tag = ManifestBase.load_type_args self, @values, 'tag', TagFactory @helpers = ManifestBase.load_type_name_args self, @values, 'helpers', HelperFactory @row_break = @values['row_break'] + # @boost_name = @values['boost_name'] end def part? @part_name != nil end - def form_field_name - form_name + '[' + @name + ']' - end - def form_name @parent.name end diff --git a/lib/locmare/booster.rb b/lib/locmare/booster.rb index be7736f2..a8201d4a 100644 --- a/lib/locmare/booster.rb +++ b/lib/locmare/booster.rb @@ -13,16 +13,25 @@ module Locmare end end + def engine_resource_name + @manifest.engine_resource_name || self.resource.table_name + end + # get engine resource from system resource manifest def my_engine_resource - Manifest.manifest.system_resources.engine_resources[self.resource.table_name] + Manifest.manifest.system_resources.engine_resources[self.engine_resource_name] + end + + def engine_classname + return self.resource.classname unless @manifest.engine_resource_extend_column_name + self.resource.attributes[@manifest.engine_resource_extend_column_name] end # get snake_case engine name # ex) circle_speech_balloon # use to url, model_name generating def engine_name - self.my_engine_resource.resource_items[self.resource.classname] + self.my_engine_resource.resource_items[self.engine_classname] end def model_name diff --git a/lib/locmare/form.rb b/lib/locmare/form.rb index ce926605..d2463d31 100644 --- a/lib/locmare/form.rb +++ b/lib/locmare/form.rb @@ -54,10 +54,9 @@ module Locmare def init_fields @manifest.each_field do |field_name, field_manifest| if boost_name = @item.class.find_boost_name(field_name) - p [field_name] extend_form_name = @item.boosters[boost_name].model_name extend_item = @item.boosters[boost_name].extend_item - @fields[field_name] = ExtendForm.new self, extend_form_name, extend_item, @mounted, @operators + @fields[field_name] = ExtendForm.new self, extend_form_name, extend_item, @mounted, @operators, field_name else @fields[field_name] = Field.new self, field_name, field_manifest end @@ -87,10 +86,11 @@ module Locmare end class ExtendForm < FormBase - attr :parent + attr :parent, :field_name - def initialize parent, form_name, item, mounted, operators + def initialize parent, form_name, item, mounted, operators, field_name @parent = parent + @field_name = field_name super form_name, item, mounted, operators self.init_fields end diff --git a/lib/locmare/form/extend_field.rb b/lib/locmare/form/extend_field.rb index 01abed51..22bd521f 100644 --- a/lib/locmare/form/extend_field.rb +++ b/lib/locmare/form/extend_field.rb @@ -38,7 +38,7 @@ module Locmare end def form_field_name - @field_manifest.form_field_name + self.form.parent.form_name + '[' + self.form.field_name + '][' + @field_name + ']' end def form_name diff --git a/lib/locmare/form/field.rb b/lib/locmare/form/field.rb index 5fa970b4..605e01c6 100644 --- a/lib/locmare/form/field.rb +++ b/lib/locmare/form/field.rb @@ -41,7 +41,7 @@ module Locmare end def form_field_name - @field_manifest.form_field_name + self.form_name + '[' + @field_name + ']' end def form_name diff --git a/lib/manifest/item/boost.rb b/lib/manifest/item/boost.rb index 2c9215e5..60509e8d 100644 --- a/lib/manifest/item/boost.rb +++ b/lib/manifest/item/boost.rb @@ -1,7 +1,8 @@ module Manifest module ItemModule class Boost < ManifestBase::NameValues - attr :level, :resource_name, :extend_column_name, :settings_column_name, + attr :level, :resource_name, :engine_resource_name, :engine_resource_extend_column_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 @@ -10,6 +11,10 @@ module Manifest super @values['level'] ||= 'post' @values['resource_name'] ||= @name + # do refactoring! + # resource_picture profiler extend by license group through license + # @values['engine_resource_name'] ||= @name # suppling booster + # @values['engine_resource_extend_column_name'] ||= @name # suppling booster @values['extend_column_name'] ||= @values['resource_name'] + '_classname' @values['settings_column_name'] ||= @values['resource_name'] + '_settings' @values['foreign_key'] ||= @values['resource_name'] + '_id' @@ -19,6 +24,8 @@ module Manifest super @level = @values['level'] @resource_name = @values['resource_name'] + @engine_resource_name = @values['engine_resource_name'] + @engine_resource_extend_column_name = @values['engine_resource_extend_column_name'] @extend_column_name = @values['extend_column_name'] @settings_column_name = @values['settings_column_name'] @foreign_key = @values['foreign_key'] diff --git a/lib/peta/item.rb b/lib/peta/item.rb index 0fd4b802..0a3ba0bd 100644 --- a/lib/peta/item.rb +++ b/lib/peta/item.rb @@ -175,12 +175,12 @@ module Peta def boost boost_manifest @boosters ||= {} - @boosters[boost_manifest.name] = Locmare::Booster.new(boost_manifest, self) + @boosters[boost_manifest.name] ||= Locmare::Booster.new(boost_manifest, self) end def boosters @boosters - end + end def extend_column? column_name self.class.extend_column? column_name diff --git a/public/local_manifest.json b/public/local_manifest.json index 02780a30..9f482304 100644 --- a/public/local_manifest.json +++ b/public/local_manifest.json @@ -728,6 +728,17 @@ } }, "picture": { + "columns": { + "license_group_settings": { + "type": "extend" + }, + "credit_picture_settings": { + "type": "extend" + }, + "license_settings": { + "type": "extend" + } + }, "column_names": [ "original_picture_id", "revision", @@ -739,9 +750,10 @@ "license_id", "md5", "artist_name", - "credit", - "settings", - "classname" + "license_group_settings", + "credit_picture_settings", + "license_settings", + "license_group_classname" ], "associations": { "belongs_to": [ @@ -751,6 +763,26 @@ } }, "resource_picture": { + "columns": { + "license_group_settings": { + "type": "extend", + "args": { + "boost_name": "license_group" + } + }, + "credit_picture_settings": { + "type": "extend", + "args": { + "boost_name": "credit_picture" + } + }, + "license_settings": { + "type": "extend", + "args": { + "boost_name": "license" + } + } + }, "column_names": [ "original_picture_id", "revision", @@ -762,10 +794,11 @@ "license_id", "md5", "artist_name", - "credit", - "settings", + "license_group_settings", + "credit_picture_settings", + "license_settings", "picture_id", - "classname" + "license_group_classname" ], "associations": { "belongs_to": [ @@ -852,6 +885,11 @@ } }, "writing_format": { + "columns": { + "settings": { + "type": "json" + } + }, "column_names": [ "name", "classname", @@ -880,13 +918,35 @@ "url" ], "extend_settings": { + "pettanr_creative_commons_v30_licenses_license": { + "columns": {}, + "column_names": [ + "open", + "commercial", + "official", + "attribution", + "derive", + "thumbnail", + "gif_convert", + "reverse", + "sync_vh", + "overlap" + ] + }, + "pettanr_creative_commons_v30_licenses_credit_picture": { + "columns": {}, + "column_names": [ + "source_url_btn_id", + "source_url_off_btn_id" + ] + }, "pettanr_pettan_commons_v01_licenses_license": { "columns": {}, "column_names": [ "open", "commercial", "official", - "attribution:", + "attribution", "derive", "thumbnail", "gif_convert", @@ -901,6 +961,97 @@ "source_url_btn_id", "source_url_off_btn_id" ] + }, + "pettanr_pettan_protected_v01_licenses_license": { + "columns": {}, + "column_names": [ + "open", + "commercial", + "official", + "attribution", + "derive", + "thumbnail", + "gif_convert", + "reverse", + "sync_vh", + "overlap", + "trackback" + ] + }, + "pettanr_pettan_protected_v01_licenses_credit_picture": { + "columns": {}, + "column_names": [ + "source_url_btn_id", + "source_url_off_btn_id" + ] + }, + "pettanr_pettan_public_v01_licenses_license": { + "columns": {}, + "column_names": [ + "open", + "commercial", + "official", + "attribution", + "derive", + "thumbnail", + "gif_convert", + "reverse", + "sync_vh", + "overlap", + "trackback" + ] + }, + "pettanr_pettan_public_v01_licenses_credit_picture": { + "columns": {}, + "column_names": [ + "source_url_btn_id" + ] + }, + "pettanr_public_domain_v01_licenses_license": { + "columns": {}, + "column_names": [ + "open", + "commercial", + "official", + "attribution", + "derive", + "thumbnail", + "gif_convert", + "reverse", + "sync_vh", + "overlap", + "trackback" + ] + }, + "pettanr_public_domain_v01_licenses_credit_picture": { + "columns": {}, + "column_names": [ + "source_url_btn_id", + "source_url_off_btn_id" + ] + }, + "pettanr_unknown_v01_licenses_license": { + "columns": {}, + "column_names": [ + "open", + "commercial", + "official", + "attribution", + "derive", + "thumbnail", + "gif_convert", + "reverse", + "sync_vh", + "overlap", + "trackback" + ] + }, + "pettanr_unknown_v01_licenses_credit_picture": { + "columns": {}, + "column_names": [ + "source_url_btn_id", + "source_url_off_btn_id" + ] } }, "associations": { @@ -924,6 +1075,32 @@ } } }, + "extend_settings": { + "pettanr_creative_commons_v30_licenses_attribute": { + "columns": {}, + "column_names": [] + }, + "pettanr_pettan_commons_v01_licenses_attribute": { + "columns": {}, + "column_names": [] + }, + "pettanr_pettan_protected_v01_licenses_attribute": { + "columns": {}, + "column_names": [] + }, + "pettanr_pettan_public_v01_licenses_attribute": { + "columns": {}, + "column_names": [] + }, + "pettanr_public_domain_v01_licenses_attribute": { + "columns": {}, + "column_names": [] + }, + "pettanr_unknown_v01_licenses_attribute": { + "columns": {}, + "column_names": [] + } + }, "column_names": [ "license_group_id", "license_group_classname", @@ -2958,7 +3135,7 @@ "open", "commercial", "official", - "attribution:", + "attribution", "derive", "thumbnail", "gif_convert", @@ -3048,19 +3225,26 @@ "type": "number" }, "row_break": true + }, + "trackback": { + "tag": { + "type": "number" + }, + "row_break": true } }, "field_names": [ "open", "commercial", "official", - "attribution:", + "attribution", "derive", "thumbnail", "gif_convert", "reverse", "sync_vh", - "overlap" + "overlap", + "trackback" ] }, "pettanr_pettan_protected_v01_licenses_credit_picture": { @@ -3144,19 +3328,26 @@ "type": "number" }, "row_break": true + }, + "trackback": { + "tag": { + "type": "number" + }, + "row_break": true } }, "field_names": [ "open", "commercial", "official", - "attribution:", + "attribution", "derive", "thumbnail", "gif_convert", "reverse", "sync_vh", - "overlap" + "overlap", + "trackback" ] }, "pettanr_pettan_public_v01_licenses_credit_picture": { @@ -3166,17 +3357,10 @@ "type": "number" }, "row_break": true - }, - "source_url_off_btn_id": { - "tag": { - "type": "number" - }, - "row_break": true } }, "field_names": [ - "source_url_btn_id", - "source_url_off_btn_id" + "source_url_btn_id" ] }, "pettanr_public_domain_v01_licenses_license": { @@ -3240,19 +3424,26 @@ "type": "number" }, "row_break": true + }, + "trackback": { + "tag": { + "type": "number" + }, + "row_break": true } }, "field_names": [ "open", "commercial", "official", - "attribution:", + "attribution", "derive", "thumbnail", "gif_convert", "reverse", "sync_vh", - "overlap" + "overlap", + "trackback" ] }, "pettanr_public_domain_v01_licenses_credit_picture": { @@ -3336,19 +3527,26 @@ "type": "number" }, "row_break": true + }, + "trackback": { + "tag": { + "type": "number" + }, + "row_break": true } }, "field_names": [ "open", "commercial", "official", - "attribution:", + "attribution", "derive", "thumbnail", "gif_convert", "reverse", "sync_vh", - "overlap" + "overlap", + "trackback" ] }, "pettanr_unknown_v01_licenses_credit_picture": { diff --git a/public/manifest.json b/public/manifest.json index 26f15256..d2297290 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -117,6 +117,8 @@ "boost": { "license_group": { "resource_name": "license", + "engine_resource_name": "license_groups", + "engine_resource_extend_column_name": "license_group_classname", "extend_column_name": "license_group_classname", "settings_column_name": "license_group_settings", "extend_model_class_name": "License", @@ -124,6 +126,8 @@ }, "license": { "level": "read", + "engine_resource_name": "license_groups", + "engine_resource_extend_column_name": "license_group_classname", "extend_column_name": "license_group_classname", "extend_model_class_name": "Attribute", "extend_item_name": "attribute" @@ -131,6 +135,8 @@ "credit_picture": { "level": "read", "resource_name": "license", + "engine_resource_name": "license_groups", + "engine_resource_extend_column_name": "license_group_classname", "extend_column_name": "license_group_classname", "settings_column_name": "credit_picture_settings", "extend_model_class_name": "CreditPicture", @@ -2563,6 +2569,138 @@ } } }, + "pettanr_creative_commons_v30_licenses_license": { + "attributes": { + "open": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "commercial": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "official": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "attribution": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "derive": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "thumbnail": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "gif_convert": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "reverse": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "sync_vh": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "overlap": { + "type": "number", + "rules": { + "required": true, + "number": true + } + } + } + }, + "pettanr_creative_commons_v30_licenses_credit_picture": { + "attributes": { + "source_url_btn_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "source_url_off_btn_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + } + } + }, + "pettanr_creative_commons_v30_licenses_attribute": { + "attributes": { + "license_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "system_picture_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "artist_name": { + "type": "text", + "rules": { + "required": true + } + }, + "caption": { + "type": "text", + "rules": {} + }, + "artist_url": { + "type": "text", + "rules": {} + }, + "source_url": { + "type": "text", + "rules": {} + }, + "more_permission_url": { + "type": "text", + "rules": {} + } + } + }, "pettanr_pettan_commons_v01_licenses_license": { "attributes": { "open": { @@ -2664,6 +2802,539 @@ "number": true } }, + "system_picture_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "artist_name": { + "type": "text", + "rules": { + "required": true + } + }, + "caption": { + "type": "text", + "rules": { + "required": true + } + }, + "sources": { + "type": "text", + "rules": { + "required": true + } + } + } + }, + "pettanr_pettan_protected_v01_licenses_license": { + "attributes": { + "open": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "commercial": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "official": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "attribution": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "derive": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "thumbnail": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "gif_convert": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "reverse": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "sync_vh": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "overlap": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "trackback": { + "type": "number", + "rules": { + "required": true, + "number": true + } + } + } + }, + "pettanr_pettan_protected_v01_licenses_credit_picture": { + "attributes": { + "source_url_btn_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "source_url_off_btn_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + } + } + }, + "pettanr_pettan_protected_v01_licenses_attribute": { + "attributes": { + "license_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "system_picture_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "artist_name": { + "type": "text", + "rules": { + "required": true + } + }, + "caption": { + "type": "text", + "rules": { + "required": true + } + }, + "sources": { + "type": "text", + "rules": { + "required": true + } + } + } + }, + "pettanr_pettan_public_v01_licenses_license": { + "attributes": { + "open": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "commercial": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "official": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "attribution": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "derive": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "thumbnail": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "gif_convert": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "reverse": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "sync_vh": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "overlap": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "trackback": { + "type": "number", + "rules": { + "required": true, + "number": true + } + } + } + }, + "pettanr_pettan_public_v01_licenses_credit_picture": { + "attributes": { + "source_url_btn_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + } + } + }, + "pettanr_pettan_public_v01_licenses_attribute": { + "attributes": { + "license_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "system_picture_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "artist_name": { + "type": "text", + "rules": { + "required": true + } + }, + "caption": { + "type": "text", + "rules": { + "required": true + } + }, + "sources": { + "type": "text", + "rules": { + "required": true + } + } + } + }, + "pettanr_public_domain_v01_licenses_license": { + "attributes": { + "open": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "commercial": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "official": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "attribution": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "derive": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "thumbnail": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "gif_convert": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "reverse": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "sync_vh": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "overlap": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "trackback": { + "type": "number", + "rules": { + "required": true, + "number": true + } + } + } + }, + "pettanr_public_domain_v01_licenses_credit_picture": { + "attributes": { + "source_url_btn_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "source_url_off_btn_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + } + } + }, + "pettanr_public_domain_v01_licenses_attribute": { + "attributes": { + "license_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "system_picture_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "artist_name": { + "type": "text", + "rules": { + "required": true + } + }, + "source_url": { + "type": "text", + "rules": { + "required": true + } + }, + "note": { + "type": "text", + "rules": { + "required": true + } + } + } + }, + "pettanr_unknown_v01_licenses_license": { + "attributes": { + "open": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "commercial": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "official": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "attribution": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "derive": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "thumbnail": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "gif_convert": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "reverse": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "sync_vh": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "overlap": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "trackback": { + "type": "number", + "rules": { + "required": true, + "number": true + } + } + } + }, + "pettanr_unknown_v01_licenses_credit_picture": { + "attributes": { + "source_url_btn_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "source_url_off_btn_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + } + } + }, + "pettanr_unknown_v01_licenses_attribute": { + "attributes": { + "license_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, "artist_name": { "type": "text", "rules": { -- 2.11.0