cocoon 1.0.2 → 1.0.3
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/README.markdown +1 -2
- data/VERSION +1 -1
- data/cocoon.gemspec +12 -2
- data/lib/cocoon/view_helpers.rb +2 -5
- data/lib/generators/cocoon/install/templates/cocoon.js +1 -1
- data/spec/cocoon_spec.rb +77 -2
- data/spec/dummy/app/models/comment.rb +3 -0
- data/spec/dummy/app/models/post.rb +3 -0
- data/spec/dummy/db/migrate/20110306212208_create_posts.rb +14 -0
- data/spec/dummy/db/migrate/20110306212250_create_comments.rb +15 -0
- data/spec/dummy/db/schema.rb +30 -0
- metadata +14 -4
data/README.markdown
CHANGED
@@ -157,9 +157,8 @@ There is no limit to the amount of nesting, though.
|
|
157
157
|
|
158
158
|
## Todo
|
159
159
|
|
160
|
-
* complete the sample projects -for simple_form- and normal rails forms
|
161
160
|
* add more sample relations: has_many :through, belongs_to, ...
|
162
|
-
*
|
161
|
+
* improve the tests (test the javascript too)(if anybody wants to lend a hand ...?)
|
163
162
|
|
164
163
|
## Copyright
|
165
164
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.3
|
data/cocoon.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cocoon}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Nathan Van der Auwera"]
|
12
|
-
s.date = %q{2011-03-
|
12
|
+
s.date = %q{2011-03-15}
|
13
13
|
s.description = %q{Unobtrusive nested forms handling, using jQuery. Use this and discover cocoon-heaven.}
|
14
14
|
s.email = %q{nathan@dixis.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -32,6 +32,8 @@ Gem::Specification.new do |s|
|
|
32
32
|
"spec/dummy/Rakefile",
|
33
33
|
"spec/dummy/app/controllers/application_controller.rb",
|
34
34
|
"spec/dummy/app/helpers/application_helper.rb",
|
35
|
+
"spec/dummy/app/models/comment.rb",
|
36
|
+
"spec/dummy/app/models/post.rb",
|
35
37
|
"spec/dummy/app/views/layouts/application.html.erb",
|
36
38
|
"spec/dummy/config.ru",
|
37
39
|
"spec/dummy/config/application.rb",
|
@@ -48,6 +50,9 @@ Gem::Specification.new do |s|
|
|
48
50
|
"spec/dummy/config/initializers/session_store.rb",
|
49
51
|
"spec/dummy/config/locales/en.yml",
|
50
52
|
"spec/dummy/config/routes.rb",
|
53
|
+
"spec/dummy/db/migrate/20110306212208_create_posts.rb",
|
54
|
+
"spec/dummy/db/migrate/20110306212250_create_comments.rb",
|
55
|
+
"spec/dummy/db/schema.rb",
|
51
56
|
"spec/dummy/public/404.html",
|
52
57
|
"spec/dummy/public/422.html",
|
53
58
|
"spec/dummy/public/500.html",
|
@@ -71,6 +76,8 @@ Gem::Specification.new do |s|
|
|
71
76
|
s.test_files = [
|
72
77
|
"spec/spec_helper.rb",
|
73
78
|
"spec/dummy/app/controllers/application_controller.rb",
|
79
|
+
"spec/dummy/app/models/comment.rb",
|
80
|
+
"spec/dummy/app/models/post.rb",
|
74
81
|
"spec/dummy/app/helpers/application_helper.rb",
|
75
82
|
"spec/dummy/config/environment.rb",
|
76
83
|
"spec/dummy/config/initializers/session_store.rb",
|
@@ -84,6 +91,9 @@ Gem::Specification.new do |s|
|
|
84
91
|
"spec/dummy/config/application.rb",
|
85
92
|
"spec/dummy/config/routes.rb",
|
86
93
|
"spec/dummy/config/boot.rb",
|
94
|
+
"spec/dummy/db/schema.rb",
|
95
|
+
"spec/dummy/db/migrate/20110306212208_create_posts.rb",
|
96
|
+
"spec/dummy/db/migrate/20110306212250_create_comments.rb",
|
87
97
|
"spec/cocoon_spec.rb",
|
88
98
|
"spec/integration/navigation_spec.rb"
|
89
99
|
]
|
data/lib/cocoon/view_helpers.rb
CHANGED
@@ -61,12 +61,9 @@ module Cocoon
|
|
61
61
|
html_options[:'data-association'] = association.to_s.singularize
|
62
62
|
|
63
63
|
new_object = f.object.class.reflect_on_association(association).klass.new
|
64
|
-
|
65
|
-
hidden_div = content_tag('div', :id => "#{model_name}_fields_template", :style => "display:none;") do
|
66
|
-
render_association(association, f, new_object)
|
67
|
-
end
|
64
|
+
html_options[:'data-template'] = CGI.escapeHTML(render_association(association, f, new_object))
|
68
65
|
|
69
|
-
|
66
|
+
link_to(name, '#', html_options )
|
70
67
|
end
|
71
68
|
end
|
72
69
|
|
@@ -2,7 +2,7 @@ $(document).ready(function() {
|
|
2
2
|
|
3
3
|
$('.add_fields').live('click', function() {
|
4
4
|
var assoc = $(this).attr('data-association');
|
5
|
-
var content = $(this).
|
5
|
+
var content = $(this).attr('data-template');
|
6
6
|
var insertionPosition = $(this).attr('data-association-insertion-position');
|
7
7
|
var insertionNode = $(this).attr('data-association-insertion-node');
|
8
8
|
var regexp_braced = new RegExp('\\[new_' + assoc + '\\]', 'g');
|
data/spec/cocoon_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Cocoon do
|
4
|
-
|
5
4
|
class TestClass < ActionView::Base
|
6
5
|
|
7
6
|
end
|
@@ -11,4 +10,80 @@ describe Cocoon do
|
|
11
10
|
it { should respond_to(:link_to_add_association) }
|
12
11
|
it { should respond_to(:link_to_remove_association) }
|
13
12
|
|
14
|
-
|
13
|
+
context "link_to_add_association" do
|
14
|
+
before(:each) do
|
15
|
+
@tester = TestClass.new
|
16
|
+
@post = Post.new
|
17
|
+
@form_obj = stub(:object => @post)
|
18
|
+
@tester.stub(:render_association).and_return('form<tag>')
|
19
|
+
end
|
20
|
+
|
21
|
+
context "without a block" do
|
22
|
+
it "should accept a name" do
|
23
|
+
result = @tester.link_to_add_association('add something', @form_obj, :comments)
|
24
|
+
result.to_s.should == '<a href="#" class="add_fields" data-association="comment" data-template="form&lt;tag&gt;">add something</a>'
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should accept html options and pass them to link_to" do
|
28
|
+
result = @tester.link_to_add_association('add something', @form_obj, :comments, {:class => 'something silly'})
|
29
|
+
result.to_s.should == '<a href="#" class="something silly add_fields" data-association="comment" data-template="form&lt;tag&gt;">add something</a>'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "with a block" do
|
34
|
+
it "the block gives the link text" do
|
35
|
+
result = @tester.link_to_add_association(@form_obj, :comments) do
|
36
|
+
"some long name"
|
37
|
+
end
|
38
|
+
result.to_s.should == '<a href="#" class="add_fields" data-association="comment" data-template="form&lt;tag&gt;">some long name</a>'
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should accept html options and pass them to link_to" do
|
42
|
+
result = @tester.link_to_add_association(@form_obj, :comments, {:class => 'floppy disk'}) do
|
43
|
+
"some long name"
|
44
|
+
end
|
45
|
+
result.to_s.should == '<a href="#" class="floppy disk add_fields" data-association="comment" data-template="form&lt;tag&gt;">some long name</a>'
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
context "link_to_remove_association" do
|
53
|
+
before(:each) do
|
54
|
+
@tester = TestClass.new
|
55
|
+
@post = Post.new
|
56
|
+
@form_obj = stub(:object => @post, :object_name => @post.class.name)
|
57
|
+
end
|
58
|
+
|
59
|
+
context "without a block" do
|
60
|
+
it "should accept a name" do
|
61
|
+
result = @tester.link_to_remove_association('remove something', @form_obj)
|
62
|
+
result.to_s.should == "<input id=\"Post__destroy\" name=\"Post[_destroy]\" type=\"hidden\" /><a href=\"#\" class=\"remove_fields dynamic\">remove something</a>"
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should accept html options and pass them to link_to" do
|
66
|
+
result = @tester.link_to_remove_association('remove something', @form_obj, {:class => 'add_some_class', :'data-something' => 'bla'})
|
67
|
+
result.to_s.should == "<input id=\"Post__destroy\" name=\"Post[_destroy]\" type=\"hidden\" /><a href=\"#\" class=\"add_some_class remove_fields dynamic\" data-something=\"bla\">remove something</a>"
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
context "with a block" do
|
73
|
+
it "the block gives the name" do
|
74
|
+
result = @tester.link_to_remove_association(@form_obj) do
|
75
|
+
"remove some long name"
|
76
|
+
end
|
77
|
+
result.to_s.should == "<input id=\"Post__destroy\" name=\"Post[_destroy]\" type=\"hidden\" /><a href=\"#\" class=\"remove_fields dynamic\">remove some long name</a>"
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should accept html options and pass them to link_to" do
|
81
|
+
result = @tester.link_to_remove_association(@form_obj, {:class => 'add_some_class', :'data-something' => 'bla'}) do
|
82
|
+
"remove some long name"
|
83
|
+
end
|
84
|
+
result.to_s.should == "<input id=\"Post__destroy\" name=\"Post[_destroy]\" type=\"hidden\" /><a href=\"#\" class=\"add_some_class remove_fields dynamic\" data-something=\"bla\">remove some long name</a>"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# This file is auto-generated from the current state of the database. Instead
|
2
|
+
# of editing this file, please use the migrations feature of Active Record to
|
3
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
4
|
+
#
|
5
|
+
# Note that this schema.rb definition is the authoritative source for your
|
6
|
+
# database schema. If you need to create the application database on another
|
7
|
+
# system, you should be using db:schema:load, not running all the migrations
|
8
|
+
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
9
|
+
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
10
|
+
#
|
11
|
+
# It's strongly recommended to check this file into your version control system.
|
12
|
+
|
13
|
+
ActiveRecord::Schema.define(:version => 20110306212250) do
|
14
|
+
|
15
|
+
create_table "comments", :force => true do |t|
|
16
|
+
t.text "body"
|
17
|
+
t.string "author"
|
18
|
+
t.integer "post_id"
|
19
|
+
t.datetime "created_at"
|
20
|
+
t.datetime "updated_at"
|
21
|
+
end
|
22
|
+
|
23
|
+
create_table "posts", :force => true do |t|
|
24
|
+
t.string "title"
|
25
|
+
t.text "body"
|
26
|
+
t.datetime "created_at"
|
27
|
+
t.datetime "updated_at"
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 1.0.
|
8
|
+
- 3
|
9
|
+
version: 1.0.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Nathan Van der Auwera
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-03-
|
17
|
+
date: 2011-03-15 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -57,6 +57,8 @@ files:
|
|
57
57
|
- spec/dummy/Rakefile
|
58
58
|
- spec/dummy/app/controllers/application_controller.rb
|
59
59
|
- spec/dummy/app/helpers/application_helper.rb
|
60
|
+
- spec/dummy/app/models/comment.rb
|
61
|
+
- spec/dummy/app/models/post.rb
|
60
62
|
- spec/dummy/app/views/layouts/application.html.erb
|
61
63
|
- spec/dummy/config.ru
|
62
64
|
- spec/dummy/config/application.rb
|
@@ -73,6 +75,9 @@ files:
|
|
73
75
|
- spec/dummy/config/initializers/session_store.rb
|
74
76
|
- spec/dummy/config/locales/en.yml
|
75
77
|
- spec/dummy/config/routes.rb
|
78
|
+
- spec/dummy/db/migrate/20110306212208_create_posts.rb
|
79
|
+
- spec/dummy/db/migrate/20110306212250_create_comments.rb
|
80
|
+
- spec/dummy/db/schema.rb
|
76
81
|
- spec/dummy/public/404.html
|
77
82
|
- spec/dummy/public/422.html
|
78
83
|
- spec/dummy/public/500.html
|
@@ -101,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
106
|
requirements:
|
102
107
|
- - ">="
|
103
108
|
- !ruby/object:Gem::Version
|
104
|
-
hash: -
|
109
|
+
hash: -916485471
|
105
110
|
segments:
|
106
111
|
- 0
|
107
112
|
version: "0"
|
@@ -123,6 +128,8 @@ summary: gem that enables easier nested forms with standard forms, formtastic an
|
|
123
128
|
test_files:
|
124
129
|
- spec/spec_helper.rb
|
125
130
|
- spec/dummy/app/controllers/application_controller.rb
|
131
|
+
- spec/dummy/app/models/comment.rb
|
132
|
+
- spec/dummy/app/models/post.rb
|
126
133
|
- spec/dummy/app/helpers/application_helper.rb
|
127
134
|
- spec/dummy/config/environment.rb
|
128
135
|
- spec/dummy/config/initializers/session_store.rb
|
@@ -136,5 +143,8 @@ test_files:
|
|
136
143
|
- spec/dummy/config/application.rb
|
137
144
|
- spec/dummy/config/routes.rb
|
138
145
|
- spec/dummy/config/boot.rb
|
146
|
+
- spec/dummy/db/schema.rb
|
147
|
+
- spec/dummy/db/migrate/20110306212208_create_posts.rb
|
148
|
+
- spec/dummy/db/migrate/20110306212250_create_comments.rb
|
139
149
|
- spec/cocoon_spec.rb
|
140
150
|
- spec/integration/navigation_spec.rb
|