cocoon 1.0.3 → 1.0.4

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 CHANGED
@@ -124,6 +124,15 @@ It takes four parameters:
124
124
 
125
125
  Optionally you could also leave out the name and supply a block that is captured to give the name (if you want to do something more complicated).
126
126
 
127
+ There is an option to add a callback on insertion. The callback can be added as follows:
128
+
129
+ $("#todo_tasks a.add_fields").
130
+ data("insertion-callback",
131
+ function() {
132
+ $(this).find("textarea").autoResize({extraSpace:0}).change();
133
+ });
134
+
135
+
127
136
  ### link_to_remove_association
128
137
 
129
138
  This function will add a link to your markup that will, when clicked, dynamically remove the surrounding partial form.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.3
1
+ 1.0.4
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.3"
8
+ s.version = "1.0.4"
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-15}
12
+ s.date = %q{2011-04-25}
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 = [
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
33
33
  "spec/dummy/app/controllers/application_controller.rb",
34
34
  "spec/dummy/app/helpers/application_helper.rb",
35
35
  "spec/dummy/app/models/comment.rb",
36
+ "spec/dummy/app/models/person.rb",
36
37
  "spec/dummy/app/models/post.rb",
37
38
  "spec/dummy/app/views/layouts/application.html.erb",
38
39
  "spec/dummy/config.ru",
@@ -52,6 +53,7 @@ Gem::Specification.new do |s|
52
53
  "spec/dummy/config/routes.rb",
53
54
  "spec/dummy/db/migrate/20110306212208_create_posts.rb",
54
55
  "spec/dummy/db/migrate/20110306212250_create_comments.rb",
56
+ "spec/dummy/db/migrate/20110420222224_create_people.rb",
55
57
  "spec/dummy/db/schema.rb",
56
58
  "spec/dummy/public/404.html",
57
59
  "spec/dummy/public/422.html",
@@ -76,6 +78,7 @@ Gem::Specification.new do |s|
76
78
  s.test_files = [
77
79
  "spec/spec_helper.rb",
78
80
  "spec/dummy/app/controllers/application_controller.rb",
81
+ "spec/dummy/app/models/person.rb",
79
82
  "spec/dummy/app/models/comment.rb",
80
83
  "spec/dummy/app/models/post.rb",
81
84
  "spec/dummy/app/helpers/application_helper.rb",
@@ -93,6 +96,7 @@ Gem::Specification.new do |s|
93
96
  "spec/dummy/config/boot.rb",
94
97
  "spec/dummy/db/schema.rb",
95
98
  "spec/dummy/db/migrate/20110306212208_create_posts.rb",
99
+ "spec/dummy/db/migrate/20110420222224_create_people.rb",
96
100
  "spec/dummy/db/migrate/20110306212250_create_comments.rb",
97
101
  "spec/cocoon_spec.rb",
98
102
  "spec/integration/navigation_spec.rb"
@@ -59,6 +59,7 @@ module Cocoon
59
59
 
60
60
  html_options[:class] = [html_options[:class], "add_fields"].compact.join(' ')
61
61
  html_options[:'data-association'] = association.to_s.singularize
62
+ html_options[:'data-associations'] = association.to_s.pluralize
62
63
 
63
64
  new_object = f.object.class.reflect_on_association(association).klass.new
64
65
  html_options[:'data-template'] = CGI.escapeHTML(render_association(association, f, new_object))
@@ -1,28 +1,48 @@
1
1
  $(document).ready(function() {
2
2
 
3
+ function replace_in_content(content, regexp_str, with_str) {
4
+ reg_exp = new RegExp(regexp_str);
5
+ content.replace(reg_exp, with_str)
6
+ }
7
+
8
+
3
9
  $('.add_fields').live('click', function() {
4
10
  var assoc = $(this).attr('data-association');
11
+ var assocs = $(this).attr('data-associations');
5
12
  var content = $(this).attr('data-template');
6
13
  var insertionPosition = $(this).attr('data-association-insertion-position');
7
14
  var insertionNode = $(this).attr('data-association-insertion-node');
15
+ var insertionCallback = $(this).data('insertion-callback');
8
16
  var regexp_braced = new RegExp('\\[new_' + assoc + '\\]', 'g');
17
+ var regexp_underscord = new RegExp('_new_' + assoc + '_', 'g');
9
18
  var new_id = new Date().getTime();
19
+ var newcontent_braced = '[' + new_id + ']';
20
+ var newcontent_underscord = '_' + new_id + '_';
10
21
  var new_content = content.replace(regexp_braced, '[' + new_id + ']');
11
22
  if (new_content == content) {
12
- regexp_braced = new RegExp('\\[new_' + assoc + 's\\]', 'g');
23
+ regexp_braced = new RegExp('\\[new_' + assocs + '\\]', 'g');
24
+ regexp_underscord = new RegExp('_new_' + assocs + '_', 'g');
13
25
  new_content = content.replace(regexp_braced, '[' + new_id + ']');
14
26
  }
27
+ new_content = new_content.replace(regexp_underscord, newcontent_underscord);
28
+
15
29
  if (insertionNode) {
16
30
  insertionNode = $(insertionNode);
17
31
  }
18
32
  else {
19
33
  insertionNode = $(this).parent();
20
34
  }
35
+
36
+ var contentNode = $(new_content);
21
37
 
22
38
  if (insertionPosition == 'after'){
23
- insertionNode.after(new_content);
39
+ insertionNode.after(contentNode);
24
40
  } else {
25
- insertionNode.before(new_content);
41
+ insertionNode.before(contentNode);
42
+ }
43
+
44
+ if(insertionCallback){
45
+ insertionCallback.call(contentNode);
26
46
  }
27
47
 
28
48
  return false;
data/spec/cocoon_spec.rb CHANGED
@@ -21,12 +21,12 @@ describe Cocoon do
21
21
  context "without a block" do
22
22
  it "should accept a name" do
23
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&amp;lt;tag&amp;gt;">add something</a>'
24
+ result.to_s.should == '<a href="#" class="add_fields" data-association="comment" data-associations="comments" data-template="form&amp;lt;tag&amp;gt;">add something</a>'
25
25
  end
26
26
 
27
27
  it "should accept html options and pass them to link_to" do
28
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&amp;lt;tag&amp;gt;">add something</a>'
29
+ result.to_s.should == '<a href="#" class="something silly add_fields" data-association="comment" data-associations="comments" data-template="form&amp;lt;tag&amp;gt;">add something</a>'
30
30
  end
31
31
  end
32
32
 
@@ -35,14 +35,22 @@ describe Cocoon do
35
35
  result = @tester.link_to_add_association(@form_obj, :comments) do
36
36
  "some long name"
37
37
  end
38
- result.to_s.should == '<a href="#" class="add_fields" data-association="comment" data-template="form&amp;lt;tag&amp;gt;">some long name</a>'
38
+ result.to_s.should == '<a href="#" class="add_fields" data-association="comment" data-associations="comments" data-template="form&amp;lt;tag&amp;gt;">some long name</a>'
39
39
  end
40
40
 
41
41
  it "should accept html options and pass them to link_to" do
42
42
  result = @tester.link_to_add_association(@form_obj, :comments, {:class => 'floppy disk'}) do
43
43
  "some long name"
44
44
  end
45
- result.to_s.should == '<a href="#" class="floppy disk add_fields" data-association="comment" data-template="form&amp;lt;tag&amp;gt;">some long name</a>'
45
+ result.to_s.should == '<a href="#" class="floppy disk add_fields" data-association="comment" data-associations="comments" data-template="form&amp;lt;tag&amp;gt;">some long name</a>'
46
+ end
47
+
48
+ end
49
+
50
+ context "with an irregular plural" do
51
+ it "should use the correct plural" do
52
+ result = @tester.link_to_add_association('add something', @form_obj, :people)
53
+ result.to_s.should == '<a href="#" class="add_fields" data-association="person" data-associations="people" data-template="form&amp;lt;tag&amp;gt;">add something</a>'
46
54
  end
47
55
 
48
56
  end
@@ -0,0 +1,2 @@
1
+ class Person < ActiveRecord::Base
2
+ end
@@ -1,3 +1,4 @@
1
1
  class Post < ActiveRecord::Base
2
2
  has_many :comments
3
+ has_many :people
3
4
  end
@@ -0,0 +1,15 @@
1
+ class CreatePeople < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :people do |t|
4
+ t.string :name
5
+ t.string :description
6
+ t.integer :post_id
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+
12
+ def self.down
13
+ drop_table :people
14
+ end
15
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 3
9
- version: 1.0.3
8
+ - 4
9
+ version: 1.0.4
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-15 00:00:00 +01:00
17
+ date: 2011-04-25 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -58,6 +58,7 @@ files:
58
58
  - spec/dummy/app/controllers/application_controller.rb
59
59
  - spec/dummy/app/helpers/application_helper.rb
60
60
  - spec/dummy/app/models/comment.rb
61
+ - spec/dummy/app/models/person.rb
61
62
  - spec/dummy/app/models/post.rb
62
63
  - spec/dummy/app/views/layouts/application.html.erb
63
64
  - spec/dummy/config.ru
@@ -77,6 +78,7 @@ files:
77
78
  - spec/dummy/config/routes.rb
78
79
  - spec/dummy/db/migrate/20110306212208_create_posts.rb
79
80
  - spec/dummy/db/migrate/20110306212250_create_comments.rb
81
+ - spec/dummy/db/migrate/20110420222224_create_people.rb
80
82
  - spec/dummy/db/schema.rb
81
83
  - spec/dummy/public/404.html
82
84
  - spec/dummy/public/422.html
@@ -106,7 +108,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
108
  requirements:
107
109
  - - ">="
108
110
  - !ruby/object:Gem::Version
109
- hash: -916485471
111
+ hash: 180877711
110
112
  segments:
111
113
  - 0
112
114
  version: "0"
@@ -128,6 +130,7 @@ summary: gem that enables easier nested forms with standard forms, formtastic an
128
130
  test_files:
129
131
  - spec/spec_helper.rb
130
132
  - spec/dummy/app/controllers/application_controller.rb
133
+ - spec/dummy/app/models/person.rb
131
134
  - spec/dummy/app/models/comment.rb
132
135
  - spec/dummy/app/models/post.rb
133
136
  - spec/dummy/app/helpers/application_helper.rb
@@ -145,6 +148,7 @@ test_files:
145
148
  - spec/dummy/config/boot.rb
146
149
  - spec/dummy/db/schema.rb
147
150
  - spec/dummy/db/migrate/20110306212208_create_posts.rb
151
+ - spec/dummy/db/migrate/20110420222224_create_people.rb
148
152
  - spec/dummy/db/migrate/20110306212250_create_comments.rb
149
153
  - spec/cocoon_spec.rb
150
154
  - spec/integration/navigation_spec.rb