spree_counties 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.bundle/config +2 -0
- data/.gitignore +14 -0
- data/.rspec +1 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +43 -0
- data/Rakefile +21 -0
- data/app/assets/javascripts/spree/backend/spree_counties.js +30 -0
- data/app/assets/javascripts/spree/frontend/spree_counties.js.coffee +58 -0
- data/app/assets/stylesheets/spree/backend/spree_counties.css +4 -0
- data/app/assets/stylesheets/spree/frontend/spree_counties.css +4 -0
- data/app/controllers/spree/api/counties_controller.rb +38 -0
- data/app/models/county_ability.rb +10 -0
- data/app/models/spree/address_decorator.rb +7 -0
- data/app/models/spree/county.rb +13 -0
- data/app/models/spree/state_decorator.rb +3 -0
- data/app/views/spree/address/_form.html.erb +86 -0
- data/app/views/spree/admin/shared/_address_form.html.erb +81 -0
- data/app/views/spree/api/counties/index.v1.rabl +11 -0
- data/app/views/spree/api/counties/show.v1.rabl +2 -0
- data/bin/rails +7 -0
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +6 -0
- data/db/migrate/20140729200830_create_spree_counties.rb +10 -0
- data/db/migrate/20140729203900_add_spree_county_reference_to_spree_address.rb +5 -0
- data/db/migrate/20141119225426_add_county_name_to_spree_address.rb +5 -0
- data/lib/generators/spree_counties/install/install_generator.rb +41 -0
- data/lib/generators/spree_counties/install/templates/1.png +0 -0
- data/lib/generators/spree_counties/install/templates/2.png +0 -0
- data/lib/generators/spree_counties/install/templates/seeds/counties.rb +367 -0
- data/lib/spree_counties/engine.rb +20 -0
- data/lib/spree_counties/factories.rb +6 -0
- data/lib/spree_counties/version.rb +3 -0
- data/lib/spree_counties.rb +2 -0
- data/spec/spec_helper.rb +87 -0
- data/spree_counties.gemspec +32 -0
- metadata +235 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e93c413637e88d68cee31578248d340bb10ced70
|
4
|
+
data.tar.gz: b6f8a04f81f2afe561add3d03e051fe24b4bdc09
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 035a10e4a361f0f965bc5ced571d3eff1f02cb67b0cc769109a83d09244a3e95234792980b864c955bd44cfa845b17dd2cede9ca08b05a89d9370c699c7a15af
|
7
|
+
data.tar.gz: ff6effea687e7e2bd76ddf6683e85539c4e095957b54fefc6147695dc4ca4cf512faf9a0424c50d6365d53dfa41eef166aff1130199dd810792527dc9d537b4c
|
data/.bundle/config
ADDED
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Gonzalo Moreno
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
Spree Counties
|
2
|
+
=============
|
3
|
+
|
4
|
+
Lets your users pick counties from states list in address's step
|
5
|
+
|
6
|
+
![alt tag](https://raw.githubusercontent.com/ronzalo/spree_counties/master/lib/generators/spree_counties/install/templates/1.png)
|
7
|
+
|
8
|
+
![alt tag](https://raw.githubusercontent.com/ronzalo/spree_counties/master/lib/generators/spree_counties/install/templates/2.png)
|
9
|
+
|
10
|
+
Installation
|
11
|
+
------------
|
12
|
+
|
13
|
+
Add spree_counties to your Gemfile:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
gem 'spree_counties'
|
17
|
+
```
|
18
|
+
|
19
|
+
Bundle your dependencies and run the installation generator:
|
20
|
+
|
21
|
+
```shell
|
22
|
+
bundle
|
23
|
+
bundle exec rails g spree_counties:install
|
24
|
+
```
|
25
|
+
|
26
|
+
Testing
|
27
|
+
-------
|
28
|
+
|
29
|
+
First bundle your dependencies, then run `rake`. `rake` will default to building the dummy app if it does not exist, then it will run specs. The dummy app can be regenerated by using `rake test_app`.
|
30
|
+
|
31
|
+
```shell
|
32
|
+
bundle
|
33
|
+
bundle exec rake
|
34
|
+
```
|
35
|
+
|
36
|
+
When testing your applications integration with this extension you may use it's factories.
|
37
|
+
Simply add this require statement to your spec_helper:
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
require 'spree_counties/factories'
|
41
|
+
```
|
42
|
+
|
43
|
+
Copyright (c) 2014 Gonzalo Moreno C, released under the New BSD License
|
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
require 'spree/testing_support/extension_rake'
|
6
|
+
|
7
|
+
RSpec::Core::RakeTask.new
|
8
|
+
|
9
|
+
task :default do
|
10
|
+
if Dir["spec/dummy"].empty?
|
11
|
+
Rake::Task[:test_app].invoke
|
12
|
+
Dir.chdir("../../")
|
13
|
+
end
|
14
|
+
Rake::Task[:spec].invoke
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'Generates a dummy app for testing'
|
18
|
+
task :test_app do
|
19
|
+
ENV['LIB_NAME'] = 'spree_counties'
|
20
|
+
Rake::Task['extension:test_app'].invoke
|
21
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
var update_county = function (region, done) {
|
2
|
+
'use strict';
|
3
|
+
|
4
|
+
var state = $('span#' + region + 'state .select2').select2('val');
|
5
|
+
var county_select = $('span#' + region + 'county select.select2');
|
6
|
+
|
7
|
+
$.get('/api/counties?state_id=' + state, function (data) {
|
8
|
+
var counties = data.counties;
|
9
|
+
if (counties.length > 0) {
|
10
|
+
county_select.html('');
|
11
|
+
var counties_with_blank = [{
|
12
|
+
name: '',
|
13
|
+
id: ''
|
14
|
+
}].concat(counties);
|
15
|
+
$.each(counties_with_blank, function (pos, county) {
|
16
|
+
var opt = $(document.createElement('option'))
|
17
|
+
.prop('value', state.id)
|
18
|
+
.html(county.name);
|
19
|
+
county_select.append(opt);
|
20
|
+
});
|
21
|
+
county_select.prop('disabled', false).show();
|
22
|
+
county_select.select2();
|
23
|
+
|
24
|
+
} else {
|
25
|
+
county_select.select2('destroy').hide();
|
26
|
+
}
|
27
|
+
|
28
|
+
if(done) done();
|
29
|
+
});
|
30
|
+
};
|
@@ -0,0 +1,58 @@
|
|
1
|
+
Spree.ready ($) ->
|
2
|
+
($ '#bstate select').change ->
|
3
|
+
updateCounty 'b'
|
4
|
+
|
5
|
+
($ '#sstate select').change ->
|
6
|
+
updateCounty 's'
|
7
|
+
|
8
|
+
updateCounty = (region) ->
|
9
|
+
stateId = getStateId(region)
|
10
|
+
if stateId?
|
11
|
+
$.get '/api/counties', {state_id: stateId}, (data) ->
|
12
|
+
Spree.Checkout[stateId] =
|
13
|
+
counties: data.counties
|
14
|
+
fillCounties(Spree.Checkout[stateId], region)
|
15
|
+
|
16
|
+
getStateId = (region) ->
|
17
|
+
$('#' + region + 'state select').val()
|
18
|
+
|
19
|
+
fillCounties = (data, region) ->
|
20
|
+
countiesRequired = true
|
21
|
+
counties = data.counties
|
22
|
+
|
23
|
+
countyPara = ($ '#' + region + 'county')
|
24
|
+
countySelect = countyPara.find('select')
|
25
|
+
countyInput = countyPara.find('input')
|
26
|
+
countySpanRequired = countyPara.find('county-required')
|
27
|
+
if counties.length > 0
|
28
|
+
selected = parseInt countySelect.val()
|
29
|
+
countySelect.html ''
|
30
|
+
countyWithBlank = [{ name: '', id: ''}].concat(counties)
|
31
|
+
$.each countyWithBlank, (idx, county) ->
|
32
|
+
opt = ($ document.createElement('option')).attr('value', county.id).html(county.name)
|
33
|
+
opt.prop 'selected', true if selected is county.id
|
34
|
+
countySelect.append opt
|
35
|
+
|
36
|
+
countySelect.prop('disabled', false).show()
|
37
|
+
countyInput.hide().prop 'disabled', true
|
38
|
+
countyPara.show()
|
39
|
+
countySpanRequired.show()
|
40
|
+
countySelect.addClass('required') if countiesRequired
|
41
|
+
countySelect.removeClass('hidden')
|
42
|
+
countyInput.removeClass('required')
|
43
|
+
else
|
44
|
+
countySelect.hide().prop 'disabled', true
|
45
|
+
countyInput.show()
|
46
|
+
if countiesRequired
|
47
|
+
countySpanRequired.show()
|
48
|
+
countyInput.addClass('required')
|
49
|
+
else
|
50
|
+
countyInput.val ''
|
51
|
+
countySpanRequired.hide()
|
52
|
+
countyInput.removeClass('required')
|
53
|
+
countyPara.toggle(!!countiesRequired)
|
54
|
+
countyInput.prop('disabled', !countiesRequired)
|
55
|
+
countyInput.removeClass('hidden')
|
56
|
+
countySelect.removeClass('required')
|
57
|
+
|
58
|
+
updateCounty 'b'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Spree
|
2
|
+
module Api
|
3
|
+
class CountiesController < Spree::Api::BaseController
|
4
|
+
skip_before_filter :set_expiry
|
5
|
+
skip_before_filter :check_for_user_or_api_key
|
6
|
+
skip_before_filter :authenticate_user
|
7
|
+
|
8
|
+
def index
|
9
|
+
@counties = scope.ransack(params[:q]).result.
|
10
|
+
includes(:state).order('name ASC')
|
11
|
+
|
12
|
+
if params[:page] || params[:per_page]
|
13
|
+
@counties = @counties.page(params[:page]).per(params[:per_page])
|
14
|
+
end
|
15
|
+
|
16
|
+
county = @counties.last
|
17
|
+
if stale?(county)
|
18
|
+
respond_with(@counties)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def show
|
23
|
+
@county = scope.find(params[:id])
|
24
|
+
respond_with(@county)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
def scope
|
29
|
+
if params[:state_id]
|
30
|
+
@state = Spree::State.accessible_by(current_ability, :read).find(params[:state_id])
|
31
|
+
return @state.counties.accessible_by(current_ability, :read)
|
32
|
+
else
|
33
|
+
return Spree::County.accessible_by(current_ability, :read)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
<% address_id = address_type.chars.first %>
|
2
|
+
<div class="inner" data-hook=<%="#{address_type}_inner" %>>
|
3
|
+
<p class="field" id=<%="#{address_id}firstname" %>>
|
4
|
+
<%= form.label :firstname, Spree.t(:first_name) %><span class="required">*</span><br />
|
5
|
+
<%= form.text_field :firstname, :class => 'required' %>
|
6
|
+
</p>
|
7
|
+
<p class="field" id=<%="#{address_id}lastname" %>>
|
8
|
+
<%= form.label :lastname, Spree.t(:last_name) %><span class="required">*</span><br />
|
9
|
+
<%= form.text_field :lastname, :class => 'required' %>
|
10
|
+
</p>
|
11
|
+
<% if Spree::Config[:company] %>
|
12
|
+
<p class="field" id=<%="#{address_id}company" %>>
|
13
|
+
<%= form.label :company, Spree.t(:company) %><br />
|
14
|
+
<%= form.text_field :company %>
|
15
|
+
</p>
|
16
|
+
<% end %>
|
17
|
+
<p class="field" id=<%="#{address_id}address1" %>>
|
18
|
+
<%= form.label :address1, Spree.t(:street_address) %><span class="required">*</span><br />
|
19
|
+
<%= form.text_field :address1, :class => 'required' %>
|
20
|
+
</p>
|
21
|
+
<p class="field" id=<%="#{address_id}address2" %>>
|
22
|
+
<%= form.label :address2, Spree.t(:street_address_2) %><br />
|
23
|
+
<%= form.text_field :address2 %>
|
24
|
+
</p>
|
25
|
+
<p class="field" id=<%="#{address_id}city" %>>
|
26
|
+
<%= form.label :city, Spree.t(:city) %><span class="required">*</span><br />
|
27
|
+
<%= form.text_field :city, :class => 'required' %>
|
28
|
+
</p>
|
29
|
+
<p class="field" id=<%="#{address_id}country" %>>
|
30
|
+
<%= form.label :country_id, Spree.t(:country) %><span class="required">*</span><br />
|
31
|
+
<span id=<%="#{address_id}country-selection" %>>
|
32
|
+
<%= form.collection_select :country_id, available_countries, :id, :name, {}, {:class => 'required'} %>
|
33
|
+
</span>
|
34
|
+
</p>
|
35
|
+
|
36
|
+
<% if Spree::Config[:address_requires_state] %>
|
37
|
+
<p class="field" id=<%="#{address_id}state" %>>
|
38
|
+
<% have_states = !address.country.states.empty? %>
|
39
|
+
<%= form.label :state, Spree.t(:state) %><span class='required' id=<%="#{address_id}state-required"%>>*</span><br/>
|
40
|
+
|
41
|
+
<% state_elements = [
|
42
|
+
form.collection_select(:state_id, address.country.states,
|
43
|
+
:id, :name,
|
44
|
+
{:include_blank => true},
|
45
|
+
{:class => have_states ? 'required' : 'hidden',
|
46
|
+
:disabled => !have_states}) +
|
47
|
+
form.text_field(:state_name,
|
48
|
+
:class => !have_states ? 'required' : 'hidden',
|
49
|
+
:disabled => have_states)
|
50
|
+
].join.gsub('"', "'").gsub("\n", "")
|
51
|
+
%>
|
52
|
+
<%= javascript_tag do -%>
|
53
|
+
$('#<%="#{address_id}state" %>').append("<%== state_elements %>");
|
54
|
+
<% end %>
|
55
|
+
</p>
|
56
|
+
<noscript>
|
57
|
+
<%= form.text_field :state_name, :class => 'required' %>
|
58
|
+
</noscript>
|
59
|
+
|
60
|
+
<p class="field" id=<%="#{address_id}county" %>>
|
61
|
+
<%= form.label :county do %>
|
62
|
+
<%= Spree.t(:county) %>
|
63
|
+
<span class="required" id=<%="#{address_id}county-required"%>>*</span>
|
64
|
+
<% end %>
|
65
|
+
<%= form.collection_select(:county_id, [],
|
66
|
+
:id, :name,
|
67
|
+
{:include_blank => true},
|
68
|
+
{:class => "form-control required",}) %>
|
69
|
+
</p>
|
70
|
+
<% end %>
|
71
|
+
|
72
|
+
<p class="field" id=<%="#{address_id}zipcode" %>>
|
73
|
+
<%= form.label :zipcode, Spree.t(:zip) %><% if address.require_zipcode? %><span class="required">*</span><br /><% end %>
|
74
|
+
<%= form.text_field :zipcode, :class => "#{'required' if address.require_zipcode?}" %>
|
75
|
+
</p>
|
76
|
+
<p class="field" id=<%="#{address_id}phone" %>>
|
77
|
+
<%= form.label :phone, Spree.t(:phone) %><% if address.require_phone? %><span class="required">*</span><br /><% end %>
|
78
|
+
<%= form.phone_field :phone, :class => "#{'required' if address.require_phone?}" %>
|
79
|
+
</p>
|
80
|
+
<% if Spree::Config[:alternative_shipping_phone] %>
|
81
|
+
<p class="field" id=<%="#{address_id}altphone" %>>
|
82
|
+
<%= form.label :alternative_phone, Spree.t(:alternative_phone) %><br />
|
83
|
+
<%= form.phone_field :alternative_phone %>
|
84
|
+
</p>
|
85
|
+
<% end %>
|
86
|
+
</div>
|
@@ -0,0 +1,81 @@
|
|
1
|
+
<% s_or_b = type.chars.first %>
|
2
|
+
|
3
|
+
<div id="<%= type %>" data-hook="address_fields">
|
4
|
+
<div class="field <%= "#{type}-row" %>">
|
5
|
+
<%= f.label :firstname, Spree.t(:first_name) %>
|
6
|
+
<%= f.text_field :firstname, :class => 'fullwidth' %>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="field <%= "#{type}-row" %>">
|
10
|
+
<%= f.label :lastname, Spree.t(:last_name) %>
|
11
|
+
<%= f.text_field :lastname, :class => 'fullwidth' %>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<% if Spree::Config[:company] %>
|
15
|
+
<div class="field <%= "#{type}-row" %>">
|
16
|
+
<%= f.label :company, Spree.t(:company) %>
|
17
|
+
<%= f.text_field :company, :class => 'fullwidth' %>
|
18
|
+
</div>
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
<div class="field <%= "#{type}-row" %>">
|
22
|
+
<%= f.label :address1, Spree.t(:street_address) %>
|
23
|
+
<%= f.text_field :address1, :class => 'fullwidth' %>
|
24
|
+
</div>
|
25
|
+
|
26
|
+
<div class="field <%= "#{type}-row" %>">
|
27
|
+
<%= f.label :address2, Spree.t(:street_address_2) %>
|
28
|
+
<%= f.text_field :address2, :class => 'fullwidth' %>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<div class="field <%= "#{type}-row" %>">
|
32
|
+
<%= f.label :city, Spree.t(:city) %>
|
33
|
+
<%= f.text_field :city, :class => 'fullwidth' %>
|
34
|
+
</div>
|
35
|
+
|
36
|
+
<div class="field <%= "#{type}-row" %>">
|
37
|
+
<%= f.label :zipcode, Spree.t(:zip) %>
|
38
|
+
<%= f.text_field :zipcode, :class => 'fullwidth' %>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<div class="field <%= "#{type}-row" %>">
|
42
|
+
<%= f.label :country_id, Spree.t(:country) %>
|
43
|
+
<span id="<%= s_or_b %>country">
|
44
|
+
<%= f.collection_select :country_id, available_countries, :id, :name, {}, {:class => 'select2 fullwidth'} %>
|
45
|
+
</span>
|
46
|
+
</div>
|
47
|
+
|
48
|
+
<div class="field <%= "#{type}-row" %>">
|
49
|
+
<%= f.label :state_id, Spree.t(:state) %>
|
50
|
+
<span id="<%= s_or_b %>state">
|
51
|
+
<%= f.text_field :state_name,
|
52
|
+
:style => "display: #{f.object.country.states.empty? ? 'block' : 'none' };",
|
53
|
+
:disabled => !f.object.country.states.empty?, :class => 'fullwidth state_name' %>
|
54
|
+
<%= f.collection_select :state_id, f.object.country.states.sort, :id, :name, {:include_blank => true}, {:class => 'select2 fullwidth', :style => "display: #{f.object.country.states.empty? ? 'none' : 'block' };", :disabled => f.object.country.states.empty?} %>
|
55
|
+
</span>
|
56
|
+
</div>
|
57
|
+
|
58
|
+
<div class="field <%= "#{type}-row" %>">
|
59
|
+
<%= f.label :county_id, Spree.t(:county) %>
|
60
|
+
<span id="<%= s_or_b %>county">
|
61
|
+
<%= f.text_field :county_name,
|
62
|
+
:style => "display: #{f.object.state.counties.empty? ? 'block' : 'none' };",
|
63
|
+
:disabled => !f.object.state.counties.empty?, :class => 'fullwidth county_name' %>
|
64
|
+
<%= f.collection_select :county_id, f.object.state.counties.sort, :id, :name, {:include_blank => true}, {:class => 'select2 fullwidth', :style => "display: #{f.object.state.counties.empty? ? 'none' : 'block' };", :disabled => f.object.state.counties.empty?} %>
|
65
|
+
</span>
|
66
|
+
</div>
|
67
|
+
|
68
|
+
<div class="field <%= "#{type}-row" %>">
|
69
|
+
<%= f.label :phone, Spree.t(:phone) %>
|
70
|
+
<%= f.phone_field :phone, :class => 'fullwidth' %>
|
71
|
+
</div>
|
72
|
+
</div>
|
73
|
+
|
74
|
+
<% content_for :head do %>
|
75
|
+
<%= javascript_tag do -%>
|
76
|
+
$(document).ready(function(){
|
77
|
+
$('span#<%= s_or_b %>country .select2').on('change', function() { update_state('<%= s_or_b %>'); });
|
78
|
+
$('span#<%= s_or_b %>state .select2').on('change', function() { update_county('<%= s_or_b %>'); });
|
79
|
+
});
|
80
|
+
<% end -%>
|
81
|
+
<% end %>
|
data/bin/rails
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
2
|
+
|
3
|
+
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
4
|
+
ENGINE_PATH = File.expand_path('../../lib/spree_counties/engine', __FILE__)
|
5
|
+
|
6
|
+
require 'rails/all'
|
7
|
+
require 'rails/engine/commands'
|
data/config/routes.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
module SpreeCounties
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path("../templates", __FILE__)
|
5
|
+
class_option :auto_run_migrations, :type => :boolean, :default => false
|
6
|
+
|
7
|
+
def add_javascripts
|
8
|
+
append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/spree_counties\n"
|
9
|
+
append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/spree_counties\n"
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_stylesheets
|
13
|
+
inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/spree_counties\n", :before => /\*\//, :verbose => true
|
14
|
+
inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/spree_counties\n", :before => /\*\//, :verbose => true
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_migrations
|
18
|
+
run 'bundle exec rake railties:install:migrations FROM=spree_counties'
|
19
|
+
end
|
20
|
+
|
21
|
+
def run_seeds
|
22
|
+
run_seeds = options[:auto_run_seeds] || ['', 'y', 'Y'].include?(ask 'Would you like to load chilean example seeds now? [Y/n]')
|
23
|
+
if run_seeds
|
24
|
+
copy_file "seeds/counties.rb", "db/seeds/counties.rb"
|
25
|
+
run 'bundle exec rails runner db/seeds/counties.rb'
|
26
|
+
else
|
27
|
+
puts 'Skipping bundle exec rails runner, don\'t forget to run it!'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def run_migrations
|
32
|
+
run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]')
|
33
|
+
if run_migrations
|
34
|
+
run 'bundle exec rake db:migrate'
|
35
|
+
else
|
36
|
+
puts 'Skipping rake db:migrate, don\'t forget to run it!'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
Binary file
|
Binary file
|