nested_fields 0.1.1

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/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ group :development do
9
+ gem "shoulda", ">= 0"
10
+ gem "bundler", "~> 1.0.0"
11
+ gem "jeweler", "~> 1.5.1"
12
+ gem "rcov", ">= 0"
13
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,20 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ git (1.2.5)
5
+ jeweler (1.5.1)
6
+ bundler (~> 1.0.0)
7
+ git (>= 1.2.5)
8
+ rake
9
+ rake (0.8.7)
10
+ rcov (0.9.9)
11
+ shoulda (2.11.3)
12
+
13
+ PLATFORMS
14
+ ruby
15
+
16
+ DEPENDENCIES
17
+ bundler (~> 1.0.0)
18
+ jeweler (~> 1.5.1)
19
+ rcov
20
+ shoulda
data/README.rdoc ADDED
@@ -0,0 +1 @@
1
+ jQuery is required.
data/Rakefile ADDED
@@ -0,0 +1,53 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'rake'
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |gem|
14
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
15
+ gem.name = "nested_fields"
16
+ gem.homepage = "http://github.com/jrmurad/nested_fields"
17
+ gem.license = "MIT"
18
+ gem.summary = %Q{Unobtrusive dynamic nested forms}
19
+ gem.description = %Q{Unobtrusive dynamic nested forms}
20
+ gem.email = "jason@thriess.com"
21
+ gem.authors = ["Jason Murad"]
22
+ # Include your dependencies below. Runtime dependencies are required when using your gem,
23
+ # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
+ # gem.add_runtime_dependency 'jabber4r', '> 0.1'
25
+ # gem.add_development_dependency 'rspec', '> 1.2.3'
26
+ end
27
+ Jeweler::RubygemsDotOrgTasks.new
28
+
29
+ require 'rake/testtask'
30
+ Rake::TestTask.new(:test) do |test|
31
+ test.libs << 'lib' << 'test'
32
+ test.pattern = 'test/**/test_*.rb'
33
+ test.verbose = true
34
+ end
35
+
36
+ require 'rcov/rcovtask'
37
+ Rcov::RcovTask.new do |test|
38
+ test.libs << 'test'
39
+ test.pattern = 'test/**/test_*.rb'
40
+ test.verbose = true
41
+ end
42
+
43
+ task :default => :test
44
+
45
+ require 'rake/rdoctask'
46
+ Rake::RDocTask.new do |rdoc|
47
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
+
49
+ rdoc.rdoc_dir = 'rdoc'
50
+ rdoc.title = "nested_fields #{version}"
51
+ rdoc.rdoc_files.include('README*')
52
+ rdoc.rdoc_files.include('lib/**/*.rb')
53
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.1
@@ -0,0 +1,13 @@
1
+ class NestedFieldsController < ActionController::Base
2
+ def add_nested_fields
3
+ @parent_class = params[:parent_class].constantize
4
+ @association = params[:association].to_sym
5
+ @builder = params[:builder].constantize
6
+ @object = @parent_class.reflect_on_association(@association).klass.new
7
+ @index = "#{Time.now.to_i}#{Time.now.usec}"
8
+
9
+ respond_to do |format|
10
+ format.js { render 'nested_fields/add_nested_fields' }
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ module NestedFieldsHelper
2
+ def nested_fields_js
3
+ render 'nested_fields/js'
4
+ end
5
+
6
+ def nested_fields_for(f, association, nested_partial="#{association}/fields")
7
+ add = add_nested_fields_path :parent_class => f.object.class, :association => association, :builder => f.class
8
+
9
+ render 'nested_fields/nested_fields', :add_url => add,
10
+ :association => association,
11
+ :f => f,
12
+ :nested_partial => nested_partial
13
+ end
14
+
15
+ def link_to_remove_fields(f, text='Remove')
16
+ link_to text, '#', :class => :remove_nested_fields
17
+ end
18
+ end
@@ -0,0 +1 @@
1
+ <%= javascript_include_tag 'nested_fields' %>
@@ -0,0 +1,16 @@
1
+ <fieldset id="<%= association %>" class="nested_fieldset">
2
+ <legend><%= association.to_s.titleize %></legend>
3
+
4
+ <a href="#" class="add_nested_fields" data-url="<%= add_url %>">Add</a>
5
+
6
+ <%= f.fields_for association, :builder => f.class do |nested_f| %>
7
+ <div class="nested_fields">
8
+ <%= link_to_remove_fields :nested_f %>
9
+
10
+ <div class="nested_fields_inputs">
11
+ <%= render nested_partial, :f => nested_f %>
12
+ <%= nested_f.input :_destroy, :as => :hidden %>
13
+ </div>
14
+ </div>
15
+ <% end %>
16
+ </fieldset>
@@ -0,0 +1,11 @@
1
+ <%= fields_for "#{@parent_class.name.underscore}[#{@association}_attributes]",
2
+ @object, :builder => @builder, :index => @index do |f| %>
3
+ <div class="nested_fields">
4
+ <%= link_to_remove_fields :nested_f %>
5
+
6
+ <div class="nested_fields_inputs">
7
+ <%= render "#{@association}/fields", :f => f %>
8
+ <%= f.input :_destroy, :as => :hidden %>
9
+ </div>
10
+ </div>
11
+ <% end %>
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ Rails::Application.routes.draw do
2
+ get :add_nested_fields, :controller => :nested_fields
3
+ end
data/lib/engine.rb ADDED
@@ -0,0 +1,11 @@
1
+ module NestedFields
2
+ class Engine < Rails::Engine
3
+ initializer 'nested_fields.add_middleware' do |app|
4
+ app.middleware.use ActionDispatch::Static, "#{root}/public"
5
+ end
6
+
7
+ config.to_prepare do
8
+ ApplicationController.helper(NestedFieldsHelper)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1 @@
1
+ require 'engine'
@@ -0,0 +1,70 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{nested_fields}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Jason Murad"]
12
+ s.date = %q{2010-12-15}
13
+ s.description = %q{Unobtrusive dynamic nested forms}
14
+ s.email = %q{jason@thriess.com}
15
+ s.extra_rdoc_files = [
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ ".document",
20
+ "Gemfile",
21
+ "Gemfile.lock",
22
+ "README.rdoc",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "app/controllers/nested_fields_controller.rb",
26
+ "app/helpers/nested_fields_helper.rb",
27
+ "app/views/nested_fields/_js.html.erb",
28
+ "app/views/nested_fields/_nested_fields.html.erb",
29
+ "app/views/nested_fields/add_nested_fields.html.erb",
30
+ "config/routes.rb",
31
+ "lib/engine.rb",
32
+ "lib/nested_fields.rb",
33
+ "nested_fields.gemspec",
34
+ "public/javascripts/nested_fields.js",
35
+ "test/helper.rb",
36
+ "test/test_nested_fields.rb"
37
+ ]
38
+ s.homepage = %q{http://github.com/jrmurad/nested_fields}
39
+ s.licenses = ["MIT"]
40
+ s.require_paths = ["lib"]
41
+ s.rubygems_version = %q{1.3.7}
42
+ s.summary = %q{Unobtrusive dynamic nested forms}
43
+ s.test_files = [
44
+ "test/helper.rb",
45
+ "test/test_nested_fields.rb"
46
+ ]
47
+
48
+ if s.respond_to? :specification_version then
49
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
50
+ s.specification_version = 3
51
+
52
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
54
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
55
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
56
+ s.add_development_dependency(%q<rcov>, [">= 0"])
57
+ else
58
+ s.add_dependency(%q<shoulda>, [">= 0"])
59
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
60
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
61
+ s.add_dependency(%q<rcov>, [">= 0"])
62
+ end
63
+ else
64
+ s.add_dependency(%q<shoulda>, [">= 0"])
65
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
66
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
67
+ s.add_dependency(%q<rcov>, [">= 0"])
68
+ end
69
+ end
70
+
@@ -0,0 +1,18 @@
1
+ $(function() {
2
+ $('.add_nested_fields').live('click', function() {
3
+ link = this;
4
+
5
+ $.get(link.getAttribute('data-url'), function(content) {
6
+ $(link).after(content);
7
+ $(link).trigger('nested_fields_ready');
8
+ });
9
+
10
+ return false;
11
+ });
12
+
13
+ $('.remove_nested_fields').live('click', function() {
14
+ $(this).closest('div.nested_fields').find('input[type=hidden]').val('1');
15
+ $(this).closest('div.nested_fields').hide();
16
+ return false;
17
+ });
18
+ });
data/test/helper.rb ADDED
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+ require 'shoulda'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+ require 'nested_fields'
16
+
17
+ class Test::Unit::TestCase
18
+ end
@@ -0,0 +1,7 @@
1
+ require 'helper'
2
+
3
+ class TestNestedFields < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,138 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nested_fields
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 1
9
+ version: 0.1.1
10
+ platform: ruby
11
+ authors:
12
+ - Jason Murad
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-12-15 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: shoulda
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :development
31
+ prerelease: false
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: bundler
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 1
42
+ - 0
43
+ - 0
44
+ version: 1.0.0
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: jeweler
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 1
57
+ - 5
58
+ - 1
59
+ version: 1.5.1
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: rcov
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ segments:
71
+ - 0
72
+ version: "0"
73
+ type: :development
74
+ prerelease: false
75
+ version_requirements: *id004
76
+ description: Unobtrusive dynamic nested forms
77
+ email: jason@thriess.com
78
+ executables: []
79
+
80
+ extensions: []
81
+
82
+ extra_rdoc_files:
83
+ - README.rdoc
84
+ files:
85
+ - .document
86
+ - Gemfile
87
+ - Gemfile.lock
88
+ - README.rdoc
89
+ - Rakefile
90
+ - VERSION
91
+ - app/controllers/nested_fields_controller.rb
92
+ - app/helpers/nested_fields_helper.rb
93
+ - app/views/nested_fields/_js.html.erb
94
+ - app/views/nested_fields/_nested_fields.html.erb
95
+ - app/views/nested_fields/add_nested_fields.html.erb
96
+ - config/routes.rb
97
+ - lib/engine.rb
98
+ - lib/nested_fields.rb
99
+ - nested_fields.gemspec
100
+ - public/javascripts/nested_fields.js
101
+ - test/helper.rb
102
+ - test/test_nested_fields.rb
103
+ has_rdoc: true
104
+ homepage: http://github.com/jrmurad/nested_fields
105
+ licenses:
106
+ - MIT
107
+ post_install_message:
108
+ rdoc_options: []
109
+
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ hash: 3137776754752327024
118
+ segments:
119
+ - 0
120
+ version: "0"
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ segments:
127
+ - 0
128
+ version: "0"
129
+ requirements: []
130
+
131
+ rubyforge_project:
132
+ rubygems_version: 1.3.7
133
+ signing_key:
134
+ specification_version: 3
135
+ summary: Unobtrusive dynamic nested forms
136
+ test_files:
137
+ - test/helper.rb
138
+ - test/test_nested_fields.rb