bc-htmlful 0.0.6 → 0.0.7.localtracker

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7.localtracker
data/bc-htmlful.gemspec CHANGED
@@ -1,15 +1,15 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bc-htmlful}
8
- s.version = "0.0.6"
8
+ s.version = "0.0.7.localtracker"
9
9
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
10
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Duarte Henriques", "Vasco Andrade e Silva"]
12
- s.date = %q{2010-04-29}
12
+ s.date = %q{2010-06-02}
13
13
  s.description = %q{Form dynamic fields}
14
14
  s.email = %q{info@byclosure.com}
15
15
  s.extra_rdoc_files = [
@@ -32,16 +32,17 @@ Gem::Specification.new do |s|
32
32
  s.homepage = %q{http://github.com/Byclosure/}
33
33
  s.rdoc_options = ["--charset=UTF-8"]
34
34
  s.require_paths = ["lib"]
35
- s.rubygems_version = %q{1.3.6}
35
+ s.rubygems_version = %q{1.3.7}
36
36
  s.summary = %q{Form dynamic fields}
37
37
 
38
38
  if s.respond_to? :specification_version then
39
39
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
40
40
  s.specification_version = 3
41
41
 
42
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
42
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
43
43
  else
44
44
  end
45
45
  else
46
46
  end
47
47
  end
48
+
@@ -1,14 +1,25 @@
1
1
  module Htmlful
2
2
  module DynamicFields
3
- def _dynamic_fields(form, resource, relationship_name, block1, block2)
4
- relationship_i18n_name = resource.class.human_attribute_name(relationship_name).to_s
3
+ def add_remove_existing_sub_object_link_in_sub_form(sub_form, relationship_i18n_name)
4
+ concat sub_form.input(:_delete, :as => :hidden, :wrapper_html => {:class => 'remove'}, :input_html => {:class => "checkbox_remove"})
5
+ concat content_tag(:li, link_to(t(:remove_nested_element, :resource_name => relationship_i18n_name), '#', :class => "remove_fieldset"))
6
+ end
7
+
8
+ def add_remove_and_create_new_nested_input_links(relationship_i18n_name)
9
+ concat link_to(t(:remove_nested_element, :resource_name => relationship_i18n_name), '#', :class => "remove_element")
10
+ concat link_to(t(:create_nested_element, :resource_name => relationship_i18n_name), "#", :class => "create_element")
11
+ end
12
+
13
+ def get_relationship_i18n_name(resource, relationship_name)
14
+ resource.class.human_attribute_name(relationship_name) #.to_s
15
+ end
16
+
17
+ def create_dynamic_fields_form(form, resource, relationship_name, block1, block2)
5
18
  form.inputs :title => relationship_name do
6
19
  unless resource.send(relationship_name).empty?
7
20
  form.semantic_fields_for(relationship_name) do |sub_form|
8
21
  sub_form.inputs do
9
22
  block1.call(sub_form)
10
- concat sub_form.input(:_delete, :as => :hidden, :wrapper_html => {:class => 'remove'}, :input_html => {:class => "checkbox_remove"})
11
- concat content_tag(:li, link_to(t(:remove_nested_element, :resource_name => relationship_i18n_name), '#', :class => "remove_fieldset"))
12
23
  end
13
24
  end
14
25
  end
@@ -20,8 +31,7 @@ module Htmlful
20
31
  end
21
32
  end
22
33
  }
23
- concat link_to(t(:remove_nested_element, :resource_name => relationship_i18n_name), '#', :class => "remove_element")
24
- concat link_to(t(:create_nested_element, :resource_name => relationship_i18n_name), "#", :class => "create_element")
34
+ add_remove_and_create_new_nested_input_links(get_relationship_i18n_name(resource, relationship_name))
25
35
  }
26
36
  end
27
37
  end
@@ -30,38 +40,54 @@ module Htmlful
30
40
  block1 = lambda do |sub_form|
31
41
  sub_object = sub_form.object
32
42
  attributes.each do |attribute|
33
- if is_date(sub_object, attribute)
43
+ if is_date?(sub_object, attribute)
34
44
  concat sub_form.input(attribute, :as => :string, :wrapper_html => {:class => 'datepick'})
35
- elsif is_datetime(sub_object, attribute)
45
+ add_remove_existing_sub_object_link_in_sub_form(sub_form, get_relationship_i18n_name(resource, relationship_name))
46
+ elsif is_datetime?(sub_object, attribute)
36
47
  concat sub_form.input(attribute, :include_blank => false)
37
- elsif is_document(sub_object, attribute)
48
+ add_remove_existing_sub_object_link_in_sub_form(sub_form, get_relationship_i18n_name(resource, relationship_name))
49
+ elsif is_document?(sub_object, attribute)
38
50
  if is_document_empty?(sub_object, attribute)
39
- concat content_tag(:li, content_tag(:p, t(:no_document)))
51
+ # XXX Is this case is similar to an is_empty_image? If so it shouldn't show anything, if not remove the comments below
52
+ # concat content_tag(:li, content_tag(:p, t(:no_document)))
53
+ # add_remove_existing_sub_object_link_in_sub_form(sub_form, get_relationship_i18n_name(resource, relationship_name))
40
54
  else
41
- if is_image(sub_object, attribute)
42
- concat image_tag(sub_form.object.send(attribute).url(:thumb))
55
+ if is_image?(sub_object, attribute)
56
+ if is_image_empty?(sub_object)
57
+ # XXX Do nohting, see is_empty_document? above
58
+ else
59
+ image_opts = if sub_object.respond_to?(:geocoded?) && sub_object.geocoded?
60
+ { :class => "geo-photo", :"data-lat" => sub_object.latitude, :"data-lng" => sub_object.longitude }
61
+ else
62
+ {}
63
+ end
64
+ concat link_to(image_tag(sub_object.send(attribute).url(:thumb), image_opts), sub_object.send(attribute).url)
65
+ add_remove_existing_sub_object_link_in_sub_form(sub_form, get_relationship_i18n_name(resource, relationship_name))
66
+ end
43
67
  else
44
68
  concat content_tag(:li, content_tag(:p, link_to(sub_object.send("#{attribute}_file_name"), sub_object.send(attribute).url)))
69
+ add_remove_existing_sub_object_link_in_sub_form(sub_form, get_relationship_i18n_name(resource, relationship_name))
45
70
  end
46
71
  end
47
72
  else
48
73
  concat sub_form.input(attribute)
74
+ add_remove_existing_sub_object_link_in_sub_form(sub_form, get_relationship_i18n_name(resource, relationship_name))
49
75
  end
50
76
  end
51
77
  end
52
78
  block2 = lambda do |sub_form|
53
79
  sub_object = sub_form.object
54
80
  attributes.each do |attribute|
55
- if is_date(sub_object, attribute)
81
+ if is_date?(sub_object, attribute)
56
82
  concat sub_form.input(attribute, :as => :string, :wrapper_html => {:class => 'datepick ignore'})
57
- elsif is_datetime(sub_object, attribute)
83
+ elsif is_datetime?(sub_object, attribute)
58
84
  concat sub_form.input(attribute, :include_blank => false)
59
85
  else
60
86
  concat sub_form.input(attribute) # takes care of everything else
61
87
  end
62
88
  end
63
89
  end
64
- _dynamic_fields(form, resource, relationship_name, block1, block2)
90
+ create_dynamic_fields_form(form, resource, relationship_name, block1, block2)
65
91
  end
66
92
 
67
93
  def show_dynamic_fields(form, resource, relationship_name, *attributes)
@@ -82,13 +108,13 @@ module Htmlful
82
108
 
83
109
  # TODO: use concat and usage will be nicer
84
110
  def show_attribute_outside_form(resource, attribute, options=nil, &block)
85
- if is_date(resource, attribute)
111
+ if is_date?(resource, attribute)
86
112
  resource.send(attribute) # TODO: add the controversial abbr method here, or just use title
87
- elsif is_document(resource, attribute)
113
+ elsif is_document?(resource, attribute)
88
114
  if is_document_empty?(resource, attribute)
89
115
  t(:no_document)
90
116
  else
91
- if is_image(resource, attribute)
117
+ if is_image?(resource, attribute)
92
118
  image_style = (options.nil? || options[:image_style].nil?)? :thumb : options[:image_style]
93
119
  image_tag(resource.send(attribute).url(image_style))
94
120
  else
@@ -102,17 +128,17 @@ module Htmlful
102
128
 
103
129
  # inside of a form
104
130
  def show_attribute(form, resource, attribute)
105
- if is_date(resource, attribute)
131
+ if is_date?(resource, attribute)
106
132
  form.input(attribute, :as => :string, :wrapper_html => {:class => 'datepick'}, :input_html => {:disabled => true})
107
- elsif is_document(resource, attribute)
133
+ elsif is_document?(resource, attribute)
108
134
  content_tag(:fieldset) do
109
135
  content_tag(:legend) do
110
136
  content_tag(:label, I18n.t("formtastic.labels.#{resource.class.name.underscore}.#{attribute}"))
111
137
  end +
112
- if is_document_empty?(resource, attribute)
138
+ if is_document_empty?(resource, attribute)
113
139
  t(:no_document)
114
140
  else
115
- if is_image(resource, attribute)
141
+ if is_image?(resource, attribute)
116
142
  image_tag(resource.send(attribute).url(:thumb))
117
143
  else
118
144
  link_to(resource.send("#{attribute}_file_name"), resource.send(attribute).url)
@@ -127,30 +153,31 @@ module Htmlful
127
153
  def show_subcollection(form, resource, association)
128
154
  collection = resource.send(association)
129
155
  resource_name_plural = localized_attribute_string(resource, association.to_sym)#resource.class.reflect_on_association(association.to_sym).klass.human_name(:count => 2)
156
+ raise ("Translation missing #{params[:locale]}, #{resource.class.human_name}, #{association}") if resource_name_plural.nil?
130
157
  content_tag(:label, resource_name_plural) +
131
- if collection.empty?
158
+ if collection.empty?
132
159
  content_tag(:p, I18n.t(:no_resource_name_plural, :resource_name_plural => resource_name_plural.mb_chars.downcase))
133
160
  else
134
161
  content_tag(:ul, collection.inject("") { |html, sub_resource|
135
- html + content_tag(:li, link_to(sub_resource.send(form.send(:detect_label_method, [sub_resource])), sub_resource))
162
+ html + content_tag(:li, link_to(sub_resource.send(form.send(:detect_label_method, [sub_resource])), sub_resource))
136
163
  }, :class => "sub-collection")
137
164
  end
138
165
  end
139
-
166
+
140
167
  def multi_select_input(form, association, options={})
141
168
  form.input(association, options) + content_tag(:li, content_tag(:div, link_to(t(:clear_selected), "#", :class => "clear_multi_select"), :class => "clear_multi_select"))
142
169
  end
143
-
170
+
144
171
  def form_inputs(form, *attributes)
145
172
  options = attributes.extract_options!
146
173
  resource = form.object
147
174
  returning("") do |html|
148
175
  attributes.each do |attribute|
149
176
  html << form.input(attribute)
150
- if is_document(resource, attribute)
177
+ if is_document?(resource, attribute)
151
178
  unless is_document_empty?(resource, attribute)
152
179
  html << "<li>"
153
- if is_image(resource, attribute)
180
+ if is_image?(resource, attribute)
154
181
  image_style = (options.nil? || options[:image_style].nil?)? :thumb : options[:image_style]
155
182
  html << image_tag(form.object.send(attribute).url(image_style))
156
183
  else
@@ -166,7 +193,7 @@ module Htmlful
166
193
  end
167
194
 
168
195
  protected
169
-
196
+
170
197
  ## copied and adapted from formtastic
171
198
  def localized_attribute_string(resource, attr_name)
172
199
  model_name = resource.class.name.underscore
@@ -187,32 +214,36 @@ module Htmlful
187
214
  i18n_value = ::I18n.t(defaults.shift, :default => defaults, :scope => "formtastic.labels")
188
215
  i18n_value.blank? ? nil : i18n_value
189
216
  end
190
-
191
- def is_date(resource, attribute)
217
+
218
+ def is_date?(resource, attribute)
192
219
  col = resource.column_for_attribute(attribute)
193
220
  col && col.type == :date
194
221
  end
195
-
196
- def is_datetime(resource, attribute)
222
+
223
+ def is_datetime?(resource, attribute)
197
224
  col = resource.column_for_attribute(attribute)
198
225
  col && col.type == :datetime
199
226
  end
200
227
 
201
228
  # taken from formtastic
202
229
  @@file_methods = [:file?, :public_filename]
203
- def is_document(resource, attribute)
230
+ def is_document?(resource, attribute)
204
231
  file = resource.send(attribute) if resource.respond_to?(attribute)
205
232
  file && @@file_methods.any? { |m| file.respond_to?(m) }
206
233
  end
207
-
234
+
208
235
  def is_document_empty?(resource, attribute)
209
236
  resource.send("#{attribute}_file_name").blank?
210
237
  end
211
-
238
+
239
+ def is_image_empty?(resource)
240
+ resource.new_record?
241
+ end
242
+
212
243
  # XXX: if image is missing, this will return false because it queries the styles. Find out what we want
213
- def is_image(resource, attribute)
244
+ def is_image?(resource, attribute)
214
245
  file = resource.send(attribute) if resource.respond_to?(attribute)
215
- is_document(resource, attribute) && file && file.respond_to?(:styles) && !file.styles.blank?
246
+ is_document?(resource, attribute) && file && file.respond_to?(:styles) && !file.styles.blank?
216
247
  end
217
248
  end
218
249
  end
metadata CHANGED
@@ -1,12 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bc-htmlful
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 1032128881
5
+ prerelease: true
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 6
9
- version: 0.0.6
9
+ - 7
10
+ - localtracker
11
+ version: 0.0.7.localtracker
10
12
  platform: ruby
11
13
  authors:
12
14
  - Duarte Henriques
@@ -15,7 +17,7 @@ autorequire:
15
17
  bindir: bin
16
18
  cert_chain: []
17
19
 
18
- date: 2010-04-29 00:00:00 +01:00
20
+ date: 2010-06-02 00:00:00 +01:00
19
21
  default_executable:
20
22
  dependencies: []
21
23
 
@@ -50,23 +52,29 @@ rdoc_options:
50
52
  require_paths:
51
53
  - lib
52
54
  required_ruby_version: !ruby/object:Gem::Requirement
55
+ none: false
53
56
  requirements:
54
57
  - - ">="
55
58
  - !ruby/object:Gem::Version
59
+ hash: 3
56
60
  segments:
57
61
  - 0
58
62
  version: "0"
59
63
  required_rubygems_version: !ruby/object:Gem::Requirement
64
+ none: false
60
65
  requirements:
61
- - - ">="
66
+ - - ">"
62
67
  - !ruby/object:Gem::Version
68
+ hash: 25
63
69
  segments:
64
- - 0
65
- version: "0"
70
+ - 1
71
+ - 3
72
+ - 1
73
+ version: 1.3.1
66
74
  requirements: []
67
75
 
68
76
  rubyforge_project:
69
- rubygems_version: 1.3.6
77
+ rubygems_version: 1.3.7
70
78
  signing_key:
71
79
  specification_version: 3
72
80
  summary: Form dynamic fields