formtastic-globalize3 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ gemfiles/*.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - ree
7
+ script: "bundle exec rake spec"
8
+ gemfile:
9
+ - gemfiles/rails_3.1.gemfile
10
+ - gemfiles/rails_3.2.gemfile
data/Appraisals ADDED
@@ -0,0 +1,7 @@
1
+ appraise 'rails-3.1' do
2
+ gem 'rails', '~> 3.1.0'
3
+ end
4
+
5
+ appraise 'rails-3.2' do
6
+ gem 'rails', '~> 3.2.0'
7
+ end
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in formtastic-globalize3.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 emjot GmbH & Co. KG
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # Formtastic::Globalize3
2
+
3
+ [![Build Status](https://travis-ci.org/emjot/formtastic-globalize3.png?branch=master)](https://travis-ci.org/emjot/formtastic-globalize3)
4
+
5
+ Transparently use globalize3 translated model fields in formtastic forms.
6
+
7
+ Without this gem, formtastic can't detect the column type of translated columns correctly (for example, you get a text field instead of a checkbox for a boolean column).
8
+
9
+ This gem patches `column_for` in the `Formtastic::Helpers::InputHelper`.
10
+
11
+ ## Compatibility
12
+
13
+ Currently, formtastic 2.x and globalize3 0.3 are supported.
14
+
15
+ ## Installation
16
+
17
+ Add this line to your application's Gemfile:
18
+
19
+ gem 'formtastic-globalize3'
20
+
21
+ And then execute:
22
+
23
+ $ bundle
24
+
25
+ Or install it yourself as:
26
+
27
+ $ gem install formtastic-globalize3
28
+
29
+ ## Usage
30
+
31
+ You don't need to do anything, just include it in your Gemfile.
32
+
33
+ ## Contributing
34
+
35
+ 1. Fork it
36
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
37
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
38
+ 4. Push to the branch (`git push origin my-new-feature`)
39
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,18 @@
1
+ require 'bundler/setup'
2
+ require 'appraisal'
3
+ require 'rspec/core/rake_task'
4
+
5
+ require 'bundler/gem_tasks'
6
+
7
+ desc 'Default: run all tests with all supported Rails versions'
8
+ task :default => :all
9
+
10
+ desc 'Run tests with all supported Rails versions.'
11
+ task :all => ["appraisal:install"] do
12
+ exec('rake appraisal spec')
13
+ end
14
+
15
+ desc 'Run all tests'
16
+ RSpec::Core::RakeTask.new('spec') do |t|
17
+ t.pattern = FileList['spec/**/*_spec.rb']
18
+ end
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'formtastic/globalize3/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "formtastic-globalize3"
8
+ spec.version = Formtastic::Globalize3::VERSION
9
+ spec.authors = ["Maximilian Herold"]
10
+ spec.email = ["herold@emjot.de"]
11
+ spec.description = %q{patch for formtastic to make its magical column type determination work with globalize3 translated models}
12
+ spec.summary = %q{formtastic features for globalize3 translated models}
13
+ spec.homepage = "https://github.com/emjot/formtastic-globalize3"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency "formtastic", "~> 2.0"
22
+ spec.add_runtime_dependency "globalize3", "~> 0.3"
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.3"
25
+ spec.add_development_dependency "appraisal", "~> 0.5.1"
26
+ spec.add_development_dependency "rspec-rails", "~> 2.8.0"
27
+ spec.add_development_dependency "sqlite3"
28
+ spec.add_development_dependency "rake"
29
+ end
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 3.1.0"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 3.2.0"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,33 @@
1
+ module Formtastic
2
+ module Globalize3
3
+ module Helpers
4
+ # Make formtastic support globalize3 translated fields when working the magical type determination for columns
5
+ module InputHelper
6
+
7
+ def self.included(base)
8
+ base.send :include, InstanceMethods
9
+ base.send :alias_method_chain, :column_for, :globalize3_support
10
+ end
11
+
12
+ module InstanceMethods
13
+
14
+ def column_for_with_globalize3_support(method)
15
+ column = column_for_without_globalize3_support(method)
16
+
17
+ if column.nil? && @object.respond_to?(:translations)
18
+ translation_obj = @object.translations.empty? ? @object.translations.new : @object.translations.first
19
+
20
+ if translation_obj.try(:respond_to?, :column_for_attribute)
21
+ column = translation_obj.column_for_attribute(method)
22
+ end
23
+ end
24
+
25
+ column
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,5 @@
1
+ module Formtastic
2
+ module Globalize3
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ require "formtastic/globalize3/version"
2
+ require "formtastic/globalize3/helpers/input_helper"
3
+
4
+ require 'globalize'
5
+ require 'formtastic'
6
+
7
+ Formtastic::FormBuilder.send(:include, Formtastic::Globalize3::Helpers::InputHelper)
@@ -0,0 +1,7 @@
1
+ class Post < ActiveRecord::Base
2
+ translates :title, :content, :published, :published_at
3
+ end
4
+
5
+ class Untranslated < ActiveRecord::Base
6
+ end
7
+
@@ -0,0 +1,22 @@
1
+ ActiveRecord::Migration.verbose = false
2
+
3
+ ActiveRecord::Schema.define do
4
+ create_table :posts, :force => true do |t|
5
+ t.integer :rating
6
+ end
7
+
8
+ create_table :post_translations, :force => true do |t|
9
+ t.string :locale
10
+ t.references :post
11
+ t.string :title
12
+ t.text :content
13
+ t.boolean :published
14
+ t.datetime :published_at
15
+ end
16
+
17
+ create_table :untranslateds, :force => true do |t|
18
+ t.string :name
19
+ t.integer :rating
20
+ end
21
+
22
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe 'Formtastic::FormBuilder#input' do
5
+
6
+ include FormtasticSpecHelper
7
+
8
+ def posts_path(*args); "/posts"; end
9
+ def untranslateds_path(*args); "/untranslateds"; end
10
+
11
+ describe 'column_for' do
12
+
13
+ describe 'on an untranslated model' do
14
+
15
+ before(:each) do
16
+ @untranslated = Untranslated.new
17
+ end
18
+
19
+ it 'should detect the type' do
20
+ semantic_form_for(@untranslated) do |builder|
21
+ builder.send(:column_for, :name).type.should == :string
22
+ builder.send(:column_for, :rating).type.should == :integer
23
+ end
24
+ end
25
+
26
+ end
27
+
28
+ describe 'on a translated model' do
29
+
30
+ before(:each) do
31
+ @post = Post.new
32
+ end
33
+
34
+ it 'should detect the type of a translated column' do
35
+ semantic_form_for(@post) do |builder|
36
+ builder.send(:column_for, :title).type.should == :string
37
+ builder.send(:column_for, :published).type.should == :boolean
38
+ builder.send(:column_for, :published_at).type.should == :datetime
39
+ end
40
+ end
41
+
42
+ it 'should detect the type of an untranslated column' do
43
+ semantic_form_for(@post) do |builder|
44
+ builder.send(:column_for, :rating).type.should == :integer
45
+ end
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,61 @@
1
+ RSpec.configure do |config|
2
+ config.mock_with :rspec
3
+ end
4
+
5
+ require 'active_support'
6
+ require 'action_pack'
7
+ require 'action_view'
8
+ require 'action_controller'
9
+ require 'action_dispatch'
10
+
11
+ require File.expand_path(File.join(File.dirname(__FILE__), '../lib/formtastic-globalize3'))
12
+
13
+ # set up globalize3 and models (borrowed from globalize3)
14
+ require 'fileutils'
15
+ require 'logger'
16
+ tmpdir = File.join(File.dirname(__FILE__), "../tmp")
17
+ FileUtils.mkdir(tmpdir) unless File.exist?(tmpdir)
18
+ log = File.expand_path(File.join(tmpdir, "globalize3_test.log"))
19
+ FileUtils.touch(log) unless File.exists?(log)
20
+ ActiveRecord::Base.logger = Logger.new(log)
21
+ ActiveRecord::LogSubscriber.attach_to(:active_record)
22
+ ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
23
+ require File.expand_path('../data/schema', __FILE__)
24
+ require File.expand_path('../data/models', __FILE__)
25
+ I18n.locale = I18n.default_locale = :en
26
+ Globalize.locale = nil
27
+
28
+ # set up formtastic helper (borrowed from formtastic)
29
+ module FormtasticSpecHelper
30
+ include ActionPack
31
+ include ActionView::Context if defined?(ActionView::Context)
32
+ include ActionController::RecordIdentifier
33
+ include ActionView::Helpers::FormHelper
34
+ include ActionView::Helpers::FormTagHelper
35
+ include ActionView::Helpers::FormOptionsHelper
36
+ include ActionView::Helpers::UrlHelper
37
+ include ActionView::Helpers::TagHelper
38
+ include ActionView::Helpers::TextHelper
39
+ include ActionView::Helpers::ActiveRecordHelper if defined?(ActionView::Helpers::ActiveRecordHelper)
40
+ include ActionView::Helpers::ActiveModelHelper if defined?(ActionView::Helpers::ActiveModelHelper)
41
+ include ActionView::Helpers::DateHelper
42
+ include ActionView::Helpers::CaptureHelper
43
+ include ActionView::Helpers::AssetTagHelper
44
+ include ActiveSupport
45
+ include ActionController::PolymorphicRoutes if defined?(ActionController::PolymorphicRoutes)
46
+ include ActionDispatch::Routing::PolymorphicRoutes
47
+ include AbstractController::UrlFor if defined?(AbstractController::UrlFor)
48
+ include ActionView::RecordIdentifier if defined?(ActionView::RecordIdentifier)
49
+
50
+ include Formtastic::Helpers::FormHelper
51
+
52
+ def self.included(base)
53
+ base.class_eval do
54
+
55
+ def protect_against_forgery?
56
+ false
57
+ end
58
+
59
+ end
60
+ end
61
+ end
metadata ADDED
@@ -0,0 +1,191 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: formtastic-globalize3
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Maximilian Herold
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2013-03-21 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: formtastic
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 2
31
+ - 0
32
+ version: "2.0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: globalize3
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 13
44
+ segments:
45
+ - 0
46
+ - 3
47
+ version: "0.3"
48
+ type: :runtime
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: bundler
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ hash: 9
59
+ segments:
60
+ - 1
61
+ - 3
62
+ version: "1.3"
63
+ type: :development
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: appraisal
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ~>
72
+ - !ruby/object:Gem::Version
73
+ hash: 9
74
+ segments:
75
+ - 0
76
+ - 5
77
+ - 1
78
+ version: 0.5.1
79
+ type: :development
80
+ version_requirements: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ name: rspec-rails
83
+ prerelease: false
84
+ requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ hash: 47
90
+ segments:
91
+ - 2
92
+ - 8
93
+ - 0
94
+ version: 2.8.0
95
+ type: :development
96
+ version_requirements: *id005
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ prerelease: false
100
+ requirement: &id006 !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ hash: 3
106
+ segments:
107
+ - 0
108
+ version: "0"
109
+ type: :development
110
+ version_requirements: *id006
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ prerelease: false
114
+ requirement: &id007 !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ hash: 3
120
+ segments:
121
+ - 0
122
+ version: "0"
123
+ type: :development
124
+ version_requirements: *id007
125
+ description: patch for formtastic to make its magical column type determination work with globalize3 translated models
126
+ email:
127
+ - herold@emjot.de
128
+ executables: []
129
+
130
+ extensions: []
131
+
132
+ extra_rdoc_files: []
133
+
134
+ files:
135
+ - .gitignore
136
+ - .rspec
137
+ - .travis.yml
138
+ - Appraisals
139
+ - Gemfile
140
+ - LICENSE.txt
141
+ - README.md
142
+ - Rakefile
143
+ - formtastic-globalize3.gemspec
144
+ - gemfiles/rails_3.1.gemfile
145
+ - gemfiles/rails_3.2.gemfile
146
+ - lib/formtastic-globalize3.rb
147
+ - lib/formtastic/globalize3/helpers/input_helper.rb
148
+ - lib/formtastic/globalize3/version.rb
149
+ - spec/data/models.rb
150
+ - spec/data/schema.rb
151
+ - spec/helpers/input_helper_spec.rb
152
+ - spec/spec_helper.rb
153
+ homepage: https://github.com/emjot/formtastic-globalize3
154
+ licenses:
155
+ - MIT
156
+ post_install_message:
157
+ rdoc_options: []
158
+
159
+ require_paths:
160
+ - lib
161
+ required_ruby_version: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ hash: 3
167
+ segments:
168
+ - 0
169
+ version: "0"
170
+ required_rubygems_version: !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ hash: 3
176
+ segments:
177
+ - 0
178
+ version: "0"
179
+ requirements: []
180
+
181
+ rubyforge_project:
182
+ rubygems_version: 1.8.15
183
+ signing_key:
184
+ specification_version: 3
185
+ summary: formtastic features for globalize3 translated models
186
+ test_files:
187
+ - spec/data/models.rb
188
+ - spec/data/schema.rb
189
+ - spec/helpers/input_helper_spec.rb
190
+ - spec/spec_helper.rb
191
+ has_rdoc: