From: yasushiito Date: Thu, 14 May 2015 01:41:28 +0000 (+0900) Subject: fix: local manifest/add helper X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=commitdiff_plain;h=6733d61c6f0551647a023be3006cb70901497c36;hp=42ad896307d40e885c02b8d4e243f9b42bc1a12e fix: local manifest/add helper --- diff --git a/app/assets/javascripts/controllers/original_pictures.js.coffee b/app/assets/javascripts/controllers/original_pictures.js.coffee index ec2c950d..ec0bf22a 100644 --- a/app/assets/javascripts/controllers/original_pictures.js.coffee +++ b/app/assets/javascripts/controllers/original_pictures.js.coffee @@ -32,11 +32,25 @@ class Pettanr.OriginalPicturesController extends Pettanr.AppController count: () -> new: () -> + @trigger('title', @params) + # set_new() ---> + @set_new() + @form = Locmare.Form.factory({ + form_name: 'original_picture', + use_name: 'multipart', + item: @item, + element_form: false, + submit: 'default' + }) + @form.render() + @trigger('ready', @form) + @trigger('lock', @params, @form) + # <--- set_new + @trigger('done', @params) edit: () -> create: () -> - @form.item.overwrite() @listenTo(@form, 'success', @post_success) @listenTo(@form, 'fail', @post_fail) @form.save() diff --git a/app/assets/javascripts/local_manifest/form/use/field/tag.js.coffee b/app/assets/javascripts/local_manifest/form/use/field/tag.js.coffee index 86852943..f342936c 100644 --- a/app/assets/javascripts/local_manifest/form/use/field/tag.js.coffee +++ b/app/assets/javascripts/local_manifest/form/use/field/tag.js.coffee @@ -7,6 +7,7 @@ class LocalManifest.FormModule.UseModule.FieldModule.TagFactory extends Manifest 'text_area': LocalManifest.FormModule.UseModule.FieldModule.TagModule.TextAreaTag, 'select': LocalManifest.FormModule.UseModule.FieldModule.TagModule.SelectTag, 'hidden': LocalManifest.FormModule.UseModule.FieldModule.TagModule.HiddenTag + 'file': LocalManifest.FormModule.UseModule.FieldModule.TagModule.HiddenTag } @default_type: () -> diff --git a/app/assets/javascripts/local_manifest/form/use/field/tag/file.js.coffee b/app/assets/javascripts/local_manifest/form/use/field/tag/file.js.coffee new file mode 100644 index 00000000..757999cf --- /dev/null +++ b/app/assets/javascripts/local_manifest/form/use/field/tag/file.js.coffee @@ -0,0 +1,10 @@ +class LocalManifest.FormModule.UseModule.FieldModule.TagModule.FileTag extends LocalManifest.FormModule.UseModule.FieldModule.TagModule.Base + + set_default: () -> + super() + @args['options']['size'] ||= 20 + + init: () -> + super() + @size = @options['size'] + diff --git a/app/assets/javascripts/locmare/form.js.coffee b/app/assets/javascripts/locmare/form.js.coffee index c294c1f5..462d0712 100644 --- a/app/assets/javascripts/locmare/form.js.coffee +++ b/app/assets/javascripts/locmare/form.js.coffee @@ -59,11 +59,7 @@ class Locmare.Form extends Locmare.FormBase @init_fields() render: () -> - @attr = { - method: @method_type(), - action: @action_url() - } - this.$el.attr(@attr) + this.$el.attr(@form_attr()) this.$el.html('') @error_explanation = null @div_fields = new Locmare.FormModule.Fields({ @@ -79,6 +75,12 @@ class Locmare.Form extends Locmare.FormBase @delegateEvents({'submit': @method_type()}) this + form_attr: () -> + { + method: @method_type(), + action: @action_url() + } + refresh: () -> _.each @fields, (field) => field.refresh() diff --git a/app/assets/javascripts/locmare/form/field/tag.js.coffee b/app/assets/javascripts/locmare/form/field/tag.js.coffee index 2cfed4ae..22967e48 100644 --- a/app/assets/javascripts/locmare/form/field/tag.js.coffee +++ b/app/assets/javascripts/locmare/form/field/tag.js.coffee @@ -5,7 +5,8 @@ class Locmare.FormModule.FieldModule.TagFactory number: Locmare.FormModule.FieldModule.TagModule.NumberTag, text_area: Locmare.FormModule.FieldModule.TagModule.TextAreaTag, select: Locmare.FormModule.FieldModule.TagModule.SelectTag, - hidden: Locmare.FormModule.FieldModule.TagModule.HiddenTag + hidden: Locmare.FormModule.FieldModule.TagModule.HiddenTag, + file: Locmare.FormModule.FieldModule.TagModule.FileTag } @factory: (field, my_manifest) -> diff --git a/app/assets/javascripts/locmare/form/field/tag/file.js.coffee b/app/assets/javascripts/locmare/form/field/tag/file.js.coffee new file mode 100644 index 00000000..4256f5ab --- /dev/null +++ b/app/assets/javascripts/locmare/form/field/tag/file.js.coffee @@ -0,0 +1,13 @@ +class Locmare.FormModule.FieldModule.TagModule.FileTag extends Locmare.FormModule.FieldModule.TagModule.Base + tagName: 'input' + + render: () -> + this.$el.html('') + @attr = { + type: 'file', + name: @form_field_name() + } + _.extend(@attr, @options()) + this.$el.attr(@attr) + this + diff --git a/app/assets/javascripts/views/original_pictures/form.js.coffee b/app/assets/javascripts/views/original_pictures/form.js.coffee new file mode 100644 index 00000000..40c739e2 --- /dev/null +++ b/app/assets/javascripts/views/original_pictures/form.js.coffee @@ -0,0 +1,39 @@ +class Pettanr.Views.OriginalPicture.Form extends Locmare.Form + + initialize: (options) -> + super(options) + + render: () -> + super() + + form_attr: () -> + _.extend(super(), { + enctype: 'multipart/form-data' + }) + + init_fields: () -> + _.each @manifest.field_names, (field_name) => + field_manifest = @manifest.fields[field_name] + @fields[field_name] = new Locmare.FormModule.Field({ + form: this, + field_name: field_name, + field_manifest: field_manifest + }) + + save: () -> + @listenTo(@item, 'save:success', @success) + @listenTo(@item, 'save:fail', @fail) + form_data = new FormData(this.$el.get(0)) + attrs = {} + _.each @fields, (field) => + if field.field_manifest.tag.type == 'file' + form_data.append('original_picture[file]', field.tag.$el[0].files[0]) + else + form_data.append(field.field_name, field.val()) + options = { + data: form_data, + processData: false, + contentType: false + } + @item.save(null, {}, options) + diff --git a/app/assets/javascripts/work/forms.js.coffee.erb b/app/assets/javascripts/work/forms.js.coffee.erb index 9f05e940..29a11a1f 100644 --- a/app/assets/javascripts/work/forms.js.coffee.erb +++ b/app/assets/javascripts/work/forms.js.coffee.erb @@ -1272,6 +1272,25 @@ }, }, }, + original_picture: { + uses: { + multipart: { + fields: { + file: { + label: { + type: 'none', + }, + tag: { + type: 'file', + }, + }, + }, + field_names: [ + 'file', + ] + }, + }, + }, original_picture_license_group: { uses: { default: { diff --git a/app/assets/javascripts/yasapp.js b/app/assets/javascripts/yasapp.js index 3399782b..1be04e17 100644 --- a/app/assets/javascripts/yasapp.js +++ b/app/assets/javascripts/yasapp.js @@ -245,6 +245,7 @@ //= require ./locmare/form/field/tag/text_area //= require ./locmare/form/field/tag/select //= require ./locmare/form/field/tag/hidden +//= require ./locmare/form/field/tag/file //= require ./locmare/form/field/helper //= require ./locmare/form/field/helper/base //= require ./locmare/form/field/helper/size diff --git a/app/controllers/original_pictures_controller.rb b/app/controllers/original_pictures_controller.rb index db1c5048..c902cf9e 100644 --- a/app/controllers/original_pictures_controller.rb +++ b/app/controllers/original_pictures_controller.rb @@ -63,6 +63,7 @@ class OriginalPicturesController < ApplicationController def create set_model + p params[:file] @imager = if params[:original_picture] PettanImager.load set_image params[:original_picture][:file] else diff --git a/config/locales/pettanr.ja.yml b/config/locales/pettanr.ja.yml index 24a9e284..ffa22507 100644 --- a/config/locales/pettanr.ja.yml +++ b/config/locales/pettanr.ja.yml @@ -1277,6 +1277,8 @@ ja: head: 公開中 tail: 廃盤 disable: 停止中 + submit: + new: 投稿する pictures: index: title: 実素材一覧 diff --git a/lib/local_manifest/form/use/field/helper.rb b/lib/local_manifest/form/use/field/helper.rb index c6b8d2bf..62d05a74 100644 --- a/lib/local_manifest/form/use/field/helper.rb +++ b/lib/local_manifest/form/use/field/helper.rb @@ -1,5 +1,5 @@ ManifestBase.require_modules "local_manifest/form/use/field/helper/", - %w|base size tail_angle color popup| + %w|base size tail_angle color popup slider| module LocalManifest module FormModule @@ -11,7 +11,7 @@ module LocalManifest def self.types { 'size' => Size, 'tail_angle' => TailAngle, 'color' => Color, - 'popup' => Popup + 'popup' => Popup, 'slider' => Slider } end diff --git a/lib/local_manifest/form/use/field/helper/slider.rb b/lib/local_manifest/form/use/field/helper/slider.rb new file mode 100644 index 00000000..437fa346 --- /dev/null +++ b/lib/local_manifest/form/use/field/helper/slider.rb @@ -0,0 +1,22 @@ +module LocalManifest + module FormModule + module UseModule + module FieldModule + module HelperModule + class Slider < Base + + def set_default + super + end + + def init + super + end + + end + + end + end + end + end +end diff --git a/lib/local_manifest/form/use/field/tag.rb b/lib/local_manifest/form/use/field/tag.rb index 63b2947a..3d82d59d 100644 --- a/lib/local_manifest/form/use/field/tag.rb +++ b/lib/local_manifest/form/use/field/tag.rb @@ -1,5 +1,5 @@ ManifestBase.require_modules "local_manifest/form/use/field/tag/", - %w|base text number text_area select hidden| + %w|base text number text_area select hidden file| module LocalManifest module FormModule @@ -11,7 +11,7 @@ module LocalManifest def self.types { 'text' => TextTag, 'number' => NumberTag, 'text_area' => TextAreaTag, - 'select' => SelectTag, 'hidden' => HiddenTag + 'select' => SelectTag, 'hidden' => HiddenTag, 'file' => FileTag } end diff --git a/lib/local_manifest/form/use/field/tag/file.rb b/lib/local_manifest/form/use/field/tag/file.rb new file mode 100644 index 00000000..8004e835 --- /dev/null +++ b/lib/local_manifest/form/use/field/tag/file.rb @@ -0,0 +1,25 @@ +module LocalManifest + module FormModule + module UseModule + module FieldModule + module TagModule + class FileTag < Base + attr :size + + def set_default + super + @args['options']['size'] ||= 20 + end + + def init + super + @size = @options['size'] + end + + end + + end + end + end + end +end diff --git a/public/local_manifest.json b/public/local_manifest.json index 1e8cdd31..6f8d14a4 100644 --- a/public/local_manifest.json +++ b/public/local_manifest.json @@ -3306,6 +3306,25 @@ } } }, + "original_picture": { + "uses": { + "multipart": { + "fields": { + "file": { + "label": { + "type": "none" + }, + "tag": { + "type": "file" + } + } + }, + "field_names": [ + "file" + ] + } + } + }, "original_picture_license_group": { "uses": { "default": {