formatted_form 1.0.2 → 1.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/Rakefile CHANGED
@@ -3,11 +3,10 @@ require 'rake'
3
3
  require 'jeweler'
4
4
 
5
5
  Jeweler::Tasks.new do |gem|
6
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
7
6
  gem.name = "formatted_form"
8
7
  gem.homepage = "http://github.com/twg/formatted_form"
9
8
  gem.license = "MIT"
10
- gem.summary = "A Rails form builder to simplify you forms"
9
+ gem.summary = "A Rails form builder to simplify your forms"
11
10
  gem.description = ''
12
11
  gem.email = "jack@theworkinggroup.ca"
13
12
  gem.authors = ["Jack Neto"]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.2
1
+ 1.1.0
@@ -2,12 +2,13 @@
2
2
 
3
3
  .value
4
4
  = field
5
- = label_text
5
+ = builder.label(method, label_text)
6
+
6
7
  - if required
7
8
  %span.required *
8
9
 
9
10
  - if error_messages.present?
10
- != error_messages
11
+ .errors= error_messages
11
12
 
12
13
  - if description.present?
13
14
  .description= description
@@ -1,6 +1,6 @@
1
1
  .form_element{:class => "#{field_name}"}
2
2
  .label
3
- = label_text
3
+ = builder.label(method, label_text)
4
4
  - if required
5
5
  %span.required *
6
6
 
@@ -8,8 +8,10 @@
8
8
  = before_text
9
9
  = field
10
10
  = after_text
11
- - if error_messages.present?
12
- = error_messages
13
11
 
14
12
  - if description.present?
15
- .description= description
13
+ .description= description
14
+
15
+ - if error_messages.present?
16
+ .errors= error_messages
17
+
@@ -8,10 +8,10 @@
8
8
  - choices.each do |choice|
9
9
  .option
10
10
  = choice[:field]
11
- = choice[:label]
11
+ %label{:for => choice[:label_for]}= choice[:label]
12
12
 
13
13
  - if error_messages.present?
14
- != error_messages
14
+ .errors= error_messages
15
15
 
16
16
  - if description.present?
17
17
  .description= description
@@ -0,0 +1,3 @@
1
+ .form_element{:class => "#{field_name}"}
2
+ = field
3
+ = after_text
@@ -0,0 +1,18 @@
1
+ .clearfix{:class => ('error' if error_messages.present?)}
2
+
3
+ .input
4
+ %ul.inputs-list
5
+ %li
6
+ %label
7
+ = field
8
+ %span
9
+ = label_text
10
+ - if required
11
+ %span.required *
12
+
13
+ - if error_messages.present?
14
+ %span.help-inline= error_messages
15
+ - if description.present?
16
+ %span.help-block= description
17
+
18
+
@@ -0,0 +1,10 @@
1
+ .clearfix{:class => ('error' if error_messages.present?)}
2
+
3
+ = builder.label(method, label_text)
4
+
5
+ .input
6
+ = field
7
+ - if error_messages.present?
8
+ %span.help-inline= error_messages
9
+ - if description.present?
10
+ %span.help-block= description
@@ -0,0 +1,24 @@
1
+ .clearfix{:class => ('error' if error_messages.present?)}
2
+
3
+ %label
4
+ = label_text
5
+ - if required
6
+ %span.required *
7
+
8
+ .input
9
+ %ul.inputs-list
10
+ - choices.each do |choice|
11
+ %li
12
+ %label{:for => choice[:label_for]}
13
+ = choice[:field]
14
+ %span= choice[:label]
15
+
16
+
17
+
18
+ - if description.present?
19
+ %span.help-block= description
20
+
21
+ - if error_messages.present?
22
+ %span.help-inline= error_messages
23
+
24
+
@@ -0,0 +1,3 @@
1
+ .actions
2
+ = field
3
+ = after_text
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{formatted_form}
8
- s.version = "1.0.2"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jack Neto"]
12
- s.date = %q{2011-04-20}
12
+ s.date = %q{2011-10-16}
13
13
  s.description = %q{}
14
14
  s.email = %q{jack@theworkinggroup.ca}
15
15
  s.extra_rdoc_files = [
@@ -24,10 +24,17 @@ Gem::Specification.new do |s|
24
24
  "app/views/formatted_form/_check_box.html.haml",
25
25
  "app/views/formatted_form/_default_field.html.haml",
26
26
  "app/views/formatted_form/_radio_button.html.haml",
27
+ "app/views/formatted_form/_submit.html.haml",
28
+ "app/views/twitter_bootstrap/_check_box.html.haml",
29
+ "app/views/twitter_bootstrap/_default_field.html.haml",
30
+ "app/views/twitter_bootstrap/_radio_button.html.haml",
31
+ "app/views/twitter_bootstrap/_submit.html.haml",
27
32
  "formatted_form.gemspec",
28
33
  "lib/formatted_form.rb",
29
34
  "lib/formatted_form/builder.rb",
35
+ "lib/formatted_form/configuration.rb",
30
36
  "lib/formatted_form/engine.rb",
37
+ "lib/formatted_form/helper.rb",
31
38
  "lib/generators/formatted_form/javascripts/javascripts_generator.rb",
32
39
  "lib/generators/formatted_form/stylesheets/stylesheets_generator.rb",
33
40
  "templates/javascripts/formatted_form.js",
@@ -36,8 +43,8 @@ Gem::Specification.new do |s|
36
43
  s.homepage = %q{http://github.com/twg/formatted_form}
37
44
  s.licenses = ["MIT"]
38
45
  s.require_paths = ["lib"]
39
- s.rubygems_version = %q{1.5.2}
40
- s.summary = %q{A Rails form builder to simplify you forms}
46
+ s.rubygems_version = %q{1.6.2}
47
+ s.summary = %q{A Rails form builder to simplify your forms}
41
48
 
42
49
  if s.respond_to? :specification_version then
43
50
  s.specification_version = 3
@@ -33,19 +33,23 @@ module FormattedForm
33
33
  end
34
34
  {
35
35
  :field => super(method, choice[1], options),
36
- :label => label_for("#{method}_#{choice[1].to_s.gsub(' ', '_').underscore}", :label => choice[0])
36
+ :label => choice[0],
37
+ :label_for => "#{object_name}_#{method}_#{choice[1].to_s.gsub(' ', '_').underscore}"
37
38
  }
38
39
  end
39
40
  else
40
41
  choices = [{
41
42
  :field => super(method, tag_value),
42
- :label => label_for("#{method}_#{tag_value.to_s.gsub(' ', '_').underscore}", :label => tag_value)
43
+ :label => tag_value,
44
+ :label_for => "#{object_name}_#{method}_#{tag_value.to_s.gsub(' ', '_').underscore}"
43
45
  }]
44
46
  end
45
47
 
46
- @template.render(:partial => "formatted_form/radio_button", :locals => {
48
+ @template.render(:partial => "#{FormattedForm.config.template}/radio_button", :locals => {
49
+ :builder => self,
50
+ :method => method,
47
51
  :field_name => 'radio_button',
48
- :label_text => label_for(method, options),
52
+ :label_text => label_text(method, options.delete(:label)),
49
53
  :choices => choices,
50
54
  :required => options.delete(:required),
51
55
  :before_text => @template.raw(options.delete(:before_text)),
@@ -58,24 +62,53 @@ module FormattedForm
58
62
 
59
63
  # f.submit 'Log In', :change_to_text => 'Logging you in ...'
60
64
  def submit(value, options={}, &block)
61
- cancel_link = @template.capture(&block) if block_given?
62
- cancel_link ||= options[:cancel_url] ? ' or ' + options.delete(:cancel_url) : ''
63
- change_to_text = options.delete(:change_to_text)
65
+ after_text = @template.capture(&block) if block_given?
66
+
67
+
68
+
69
+ case FormattedForm.config.template
70
+ when :formatted_form
71
+ # Set the script to change the text
72
+ if change_to_text = options.delete(:change_to_text)
73
+ options[:onclick] ||= ''
74
+ options[:onclick] = "$(this).closest('.form_element').hide();$(this).closest('.form_element').after($('<div class=form_element><div class=value>#{change_to_text}</div></div>'))"
75
+ end
76
+
77
+ when :twitter_bootstrap
78
+ # Add specific bootstrap class
79
+ options[:class] ||= ''
80
+ options[:class] += ' btn primary'
64
81
 
65
- out = @template.content_tag(:div, :class => "form_element submit#{' change_to_text' if change_to_text}") do
66
- if options.delete(:image)
67
- content = super(value, options.merge(:style=>'visibility:hidden;position: absolute'))
68
- content << @template.link_to(@template.content_tag(:span, value), "#", :class => 'submit_image')
69
- content << cancel_link.html_safe
70
- else
71
- super(value, options) + cancel_link.html_safe
82
+ # Set the script to change the text
83
+ if change_to_text = options.delete(:change_to_text)
84
+ options[:onclick] ||= ''
85
+ options[:onclick] = "$(this).closest('.actions').hide();$(this).closest('.actions').after($('<div class=actions>#{change_to_text}</div>'))"
72
86
  end
73
87
  end
88
+
89
+ @template.render(:partial => "#{FormattedForm.config.template}/submit", :locals => {
90
+ :field_name => 'submit',
91
+ :field => super(value, options),
92
+ :after_text => after_text,
93
+ :change_to_text => change_to_text
94
+ })
95
+
96
+
97
+ # out = @template.content_tag(:div, :class => "form_element submit#{' change_to_text' if change_to_text}") do
98
+ # if options.delete(:image)
99
+ # content = super(value, options.merge(:style=>'visibility:hidden;position: absolute'))
100
+ # content << @template.link_to(@template.content_tag(:span, value), "#", :class => 'submit_image')
101
+ # content << cancel_link.html_safe
102
+ # else
103
+ # super(value, options) + cancel_link.html_safe
104
+ # end
105
+ # end
106
+ #
107
+ # if change_to_text
108
+ # out << @template.content_tag(:div, change_to_text, :class => 'form_element submit_text')
109
+ # end
110
+ # out.html_safe
74
111
 
75
- if change_to_text
76
- out << @template.content_tag(:div, change_to_text, :class => 'form_element submit_text')
77
- end
78
- out.html_safe
79
112
  end
80
113
 
81
114
  # generic container for all things form
@@ -102,19 +135,20 @@ module FormattedForm
102
135
 
103
136
  def error_messages_for(method)
104
137
  if (object and object.respond_to?(:errors) and errors = object.errors[method] and !errors.empty?)
105
- @template.content_tag(:div, errors.is_a?(Array) ? errors.first : errors, :class => 'errors')
138
+ errors.is_a?(Array) ? errors.first : errors
106
139
  end
107
140
  end
108
141
 
109
- def formatted_fields_for(record_or_name_or_array, *args, &block)
142
+ def fields_for(record_or_name_or_array, *args, &block)
110
143
  options = args.extract_options!
111
144
  options.merge!(:builder => FormattedForm::Builder)
112
- fields_for(record_or_name_or_array, *(args << options), &block)
145
+ super(record_or_name_or_array, *(args << options), &block)
113
146
  end
114
-
147
+
115
148
 
116
149
  protected
117
150
 
151
+ # Main rendering method
118
152
  def render_field(field_name, method, options={}, &block)
119
153
  case field_name
120
154
  when 'check_box'
@@ -122,21 +156,23 @@ module FormattedForm
122
156
  else
123
157
  template = 'default_field'
124
158
  end
125
- @template.render(:partial => "formatted_form/#{template}", :locals => {
159
+ @template.render(:partial => "#{FormattedForm.config.template}/#{template}", :locals => {
160
+ :builder => self,
161
+ :method => method,
126
162
  :field_name => field_name,
127
- :label_text => label_for(method, options),
163
+ :field => @template.capture(&block),
164
+ :label_text => label_text(method, options.delete(:label)),
128
165
  :required => options.delete(:required),
129
166
  :before_text => @template.raw(options.delete(:before_text)),
130
167
  :after_text => @template.raw(options.delete(:after_text)),
131
- :field => @template.capture(&block),
132
168
  :description => @template.raw(options.delete(:desc)),
133
169
  :error_messages => error_messages_for(method)
134
170
  })
135
171
  end
136
172
 
137
- def label_for(method, options)
138
- @template.label(object_name, method, @template.raw(options.delete(:label)) || method.to_s.titleize.capitalize)
139
- end
140
-
173
+ def label_text(method, text = nil)
174
+ text.blank? ? method.to_s.titleize.capitalize : @template.raw(text)
175
+ end
176
+
141
177
  end
142
178
  end
@@ -0,0 +1,16 @@
1
+ module FormattedForm
2
+ class Configuration
3
+
4
+ # The templates used to use the views.
5
+ # Options are
6
+ # :formatted_form - the default rendering template
7
+ # :twitter_bootstrap - Twitter Bootstrap templates
8
+ attr_accessor :template
9
+
10
+ # Configuration defaults
11
+ def initialize
12
+ @template = :formatted_form
13
+ end
14
+
15
+ end
16
+ end
@@ -3,8 +3,15 @@ require "rails"
3
3
 
4
4
  module FormattedForm
5
5
  class Engine < Rails::Engine
6
+
6
7
  initializer 'formatted_form_helper' do |app|
7
- ActionView::Base.send(:include, FormattedForm::FormattedFormHelper)
8
+ ActionView::Base.send(:include, FormattedForm::Helper)
9
+
10
+ # Removing field_with_errors div araound elemetns with errors
11
+ if FormattedForm.config.template == :twitter_bootstrap
12
+ ActionView::Base.field_error_proc = proc { |input, instance| input }
13
+ end
8
14
  end
15
+
9
16
  end
10
17
  end
@@ -0,0 +1,10 @@
1
+ module FormattedForm::Helper
2
+
3
+ def formatted_form_for(record_or_name_or_array, *args, &proc)
4
+ options = args.extract_options!
5
+ options.merge!(:builder => FormattedForm::Builder)
6
+ (options[:html] ||= { }).merge!(:class => "#{options[:html][:class]} formatted")
7
+ form_for(record_or_name_or_array, *(args << options), &proc)
8
+ end
9
+
10
+ end
@@ -1,15 +1,20 @@
1
+ require 'formatted_form/engine' if defined?(Rails)
2
+ require 'formatted_form/builder'
3
+ require 'formatted_form/helper'
4
+ require 'formatted_form/configuration'
5
+
1
6
  module FormattedForm
2
- require 'formatted_form/engine' if defined?(Rails)
3
- require 'formatted_form/builder'
4
-
5
- module FormattedFormHelper
6
- def formatted_form_for(record_or_name_or_array, *args, &proc)
7
- options = args.extract_options!
8
- options.merge!(:builder => FormattedForm::Builder)
9
- (options[:html] ||= { }).merge!(:class => "#{options[:html][:class]} formatted")
10
- form_for(record_or_name_or_array, *(args << options), &proc)
7
+ class << self
8
+
9
+ def configure
10
+ yield configuration
11
11
  end
12
+
13
+ def configuration
14
+ @configuration ||= Configuration.new
15
+ end
16
+ alias :config :configuration
17
+
12
18
  end
13
-
14
19
  end
15
20
 
@@ -4,7 +4,7 @@ form.formatted
4
4
  background: #eee
5
5
  border: solid #ddd 2px
6
6
  color: #000
7
- width: 400px
7
+ width: 50%
8
8
  padding: 10px 20px
9
9
  -webkit-box-shadow: 0 1px 4px rgba(0,0,0,0.3)
10
10
  -moz-box-shadow: 0 1px 4px rgba(0,0,0,0.3)
@@ -29,6 +29,7 @@ form.formatted
29
29
  .errors
30
30
  font: 9px/12px Trebuchet MS, serif
31
31
  color: #BE1E2D
32
+ clear: both
32
33
  .description
33
34
  clear: both
34
35
  font: italic 10px/12px Trebuchet MS, serif
@@ -58,13 +59,16 @@ form.formatted
58
59
  letter-spacing: 0.1em
59
60
  input
60
61
  margin-right: 5px
61
- .fieldWithErrors
62
+ .field_with_errors
62
63
  float: left
63
64
 
64
65
  .form_element.radio_button
65
66
  .value
66
67
  .option
67
68
  float: left
69
+ .option + .option
70
+ margin-left: 10px
71
+
68
72
 
69
73
  // --- Submit button ---
70
74
  .form_element.submit
metadata CHANGED
@@ -1,29 +1,25 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: formatted_form
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
4
5
  prerelease:
5
- version: 1.0.2
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Jack Neto
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-04-20 00:00:00 -04:00
12
+ date: 2011-10-16 00:00:00.000000000 -04:00
14
13
  default_executable:
15
14
  dependencies: []
16
-
17
- description: ""
15
+ description: ''
18
16
  email: jack@theworkinggroup.ca
19
17
  executables: []
20
-
21
18
  extensions: []
22
-
23
- extra_rdoc_files:
19
+ extra_rdoc_files:
24
20
  - LICENSE.txt
25
21
  - README.md
26
- files:
22
+ files:
27
23
  - LICENSE.txt
28
24
  - README.md
29
25
  - Rakefile
@@ -31,41 +27,45 @@ files:
31
27
  - app/views/formatted_form/_check_box.html.haml
32
28
  - app/views/formatted_form/_default_field.html.haml
33
29
  - app/views/formatted_form/_radio_button.html.haml
30
+ - app/views/formatted_form/_submit.html.haml
31
+ - app/views/twitter_bootstrap/_check_box.html.haml
32
+ - app/views/twitter_bootstrap/_default_field.html.haml
33
+ - app/views/twitter_bootstrap/_radio_button.html.haml
34
+ - app/views/twitter_bootstrap/_submit.html.haml
34
35
  - formatted_form.gemspec
35
36
  - lib/formatted_form.rb
36
37
  - lib/formatted_form/builder.rb
38
+ - lib/formatted_form/configuration.rb
37
39
  - lib/formatted_form/engine.rb
40
+ - lib/formatted_form/helper.rb
38
41
  - lib/generators/formatted_form/javascripts/javascripts_generator.rb
39
42
  - lib/generators/formatted_form/stylesheets/stylesheets_generator.rb
40
43
  - templates/javascripts/formatted_form.js
41
44
  - templates/stylesheets/formatted_form.sass
42
45
  has_rdoc: true
43
46
  homepage: http://github.com/twg/formatted_form
44
- licenses:
47
+ licenses:
45
48
  - MIT
46
49
  post_install_message:
47
50
  rdoc_options: []
48
-
49
- require_paths:
51
+ require_paths:
50
52
  - lib
51
- required_ruby_version: !ruby/object:Gem::Requirement
53
+ required_ruby_version: !ruby/object:Gem::Requirement
52
54
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
57
- required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
60
  none: false
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: "0"
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
63
65
  requirements: []
64
-
65
66
  rubyforge_project:
66
- rubygems_version: 1.5.2
67
+ rubygems_version: 1.6.2
67
68
  signing_key:
68
69
  specification_version: 3
69
- summary: A Rails form builder to simplify you forms
70
+ summary: A Rails form builder to simplify your forms
70
71
  test_files: []
71
-