spree_address_book 0.50.1 → 0.50.2

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.
@@ -0,0 +1,33 @@
1
+ CheckoutHelper.module_eval do
2
+ def address_field(form, method, id_prefix = "b", &handler)
3
+ content_tag :p, :id => [id_prefix, method].join, :class => "field" do
4
+ if handler
5
+ handler.call
6
+ else
7
+ is_required = Address.required_fields.include?(method)
8
+ separator = is_required ? '<span class="req">*</span><br />' : '<br />'
9
+ form.label(method) + separator.html_safe +
10
+ form.text_field(method, :class => is_required ? 'required' : nil)
11
+ end
12
+ end
13
+ end
14
+
15
+ def address_state(form, country)
16
+ country ||= Country.find(Spree::Config[:default_country_id])
17
+ have_states = !country.states.empty?
18
+ state_elements = [
19
+ form.collection_select(:state_id, country.states.order(:name),
20
+ :id, :name,
21
+ {:include_blank => true},
22
+ {:class => have_states ? "required" : "hidden",
23
+ :disabled => !have_states}) +
24
+ form.text_field(:state_name,
25
+ :class => !have_states ? "required" : "hidden",
26
+ :disabled => have_states)
27
+ ].join.gsub('"', "'").gsub("\n", "")
28
+
29
+ form.label(:state, t(:state)) + '<span class="req">*</span><br />'.html_safe +
30
+ content_tag(:noscript, form.text_field(:state_name, :class => 'required')) +
31
+ javascript_tag("document.write(\"#{state_elements.html_safe}\");")
32
+ end
33
+ end
@@ -1,5 +1,10 @@
1
1
  Address.class_eval do
2
2
  belongs_to :user
3
+
4
+ def self.required_fields
5
+ validator = Address.validators.find{|v| v.kind_of?(ActiveModel::Validations::PresenceValidator)}
6
+ validator ? validator.attributes : []
7
+ end
3
8
 
4
9
  # can modify an address if it's not been used in an order
5
10
  def editable?
@@ -1,46 +1,15 @@
1
1
  <% ADDRESS_FIELDS.each do |field| %>
2
2
  <p id="<%= [address_name, field].join('_') %>" class="field">
3
3
  <% if field == "country" %>
4
- <%= address_form.label :country_id, t(field, :scope => [:activerecord, :attributes, :address]) %>
4
+ <%= address_form.label :country_id, t(field, :scope => [:activerecord, :attributes, :address]) %><span class="req">*</span><br />
5
5
  <span><%= address_form.collection_select :country_id, available_countries, :id, :name, {}, {:class => 'required'} %></span>
6
- <span class="req">*</span>
7
6
  <% elsif field == "state" && Spree::Config[:address_requires_state] %>
8
- <%= address_form.label :state_id, t(field, :scope => [:activerecord, :attributes, :address]) %>
9
- <span id="state">
10
- <% have_states = !address.country.states.empty? %>
11
- <noscript>
12
- <%= address_form.text_field :state_name, :class => 'required' %>
13
- </noscript>
14
- <% state_elements = [
15
- address_form.collection_select(:state_id, address.country.states,
16
- :id, :name,
17
- {:include_blank => true},
18
- {:class => have_states ? "required" : "hidden",
19
- :disabled => !have_states}) +
20
- address_form.text_field(:state_name,
21
- :class => !have_states ? "required" : "hidden",
22
- :disabled => have_states)
23
- ].join.gsub('"', "'").gsub("\n", "")
24
- %>
25
- <script type="text/javascript" language="javascript" charset="utf-8">
26
- // <![CDATA[
27
- document.write("<%= raw state_elements %>");
28
- // ]]>
29
- </script>
30
- </span>
31
- <span class="req">*</span>
32
- <% elsif field == "address2" %>
33
- <%= address_form.label field, t(field, :scope => [:activerecord, :attributes, :address]) %>
34
- <%= address_form.text_field field %>
7
+ <%= address_field(address_form, :state, address_name) { address_state(address_form, address.country) } %>
35
8
  <% else %>
36
- <%= address_form.label field, t(field, :scope => [:activerecord, :attributes, :address]) %>
37
- <%= address_form.text_field field, :class => 'required' %><span class="req">*</span>
9
+ <%= address_field(address_form, field.to_sym, address_name) %>
38
10
  <% end %>
39
11
  </p>
40
12
  <% end %>
41
13
  <% if Spree::Config["alternative_#{address_name}_phone"] %>
42
- <p id="altphone">
43
- <%= address_form.label :alternative_phone, t(:alternative_phone) %>
44
- <%= address_form.text_field :alternative_phone %>
45
- </p>
14
+ <%= address_field(address_form, :alternative_phone, address_name) %>
46
15
  <% end %>
@@ -20,17 +20,18 @@
20
20
  </label>
21
21
  </p>
22
22
  <% end %>
23
- <div class="select_address">
24
- <p class="field">
23
+ <div class="select_address" data-role="fieldcontain">
24
+ <fieldset data-role="controlgroup">
25
25
  <% if @addresses.present? %>
26
26
  <% @addresses.each_with_index do |address, idx| %>
27
- <span id="<%= [address_type, dom_id(address)].join('_') %>">
28
- <label><%= form.radio_button "#{address_name}_id", address.id, :checked => (idx == 0) %> <%= address %></label> <%= link_to t(:edit), edit_address_path(address) %><br />
29
- </span>
27
+ <%= form.radio_button "#{address_name}_id", address.id, :checked => (idx == 0) %>
28
+ <%= form.label ["#{address_name}_id", address.id], address.to_s %>
29
+ <%= link_to t(:edit), edit_address_path(address) %><br />
30
30
  <% end %>
31
- <label><%= form.radio_button "#{address_name}_id", 0 %> <%= t('other_address') %></label>
31
+ <%= form.radio_button "#{address_name}_id", 0 %>
32
+ <%= form.label ["#{address_name}_id", 0], t('other_address') %>
32
33
  <% end %>
33
- </p>
34
+ </fieldset>
34
35
  </div>
35
36
  <%= form.fields_for address_name do |address_form| %>
36
37
  <div class="inner">
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.platform = Gem::Platform::RUBY
3
3
  s.name = 'spree_address_book'
4
- s.version = '0.50.1'
4
+ s.version = '0.50.2'
5
5
  s.summary = 'Adds address book for users to Spree'
6
6
  #s.description = 'Add (optional) gem description here'
7
7
  s.required_ruby_version = '>= 1.8.7'
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 50
8
- - 1
9
- version: 0.50.1
8
+ - 2
9
+ version: 0.50.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Roman Smirnov
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-05-12 00:00:00 +04:00
17
+ date: 2011-06-25 00:00:00 +04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -61,6 +61,7 @@ files:
61
61
  - Versionfile
62
62
  - app/controllers/addresses_controller.rb
63
63
  - app/controllers/checkout_controller_decorator.rb
64
+ - app/helpers/checkout_helper_decorator.rb
64
65
  - app/models/address_decorator.rb
65
66
  - app/models/order_decorator.rb
66
67
  - app/models/user_decorator.rb