spree_retailers 0.40.0.1 → 0.40.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +8 -10
- data/Rakefile +40 -64
- data/app/controllers/retailers_controller.rb +1 -4
- data/app/helpers/retailers_helper.rb +9 -0
- data/app/models/retailer.rb +59 -2
- data/app/validators/email_validator.rb +20 -0
- data/app/views/admin/retailers/_form.html.erb +7 -1
- data/app/views/admin/retailers/index.html.erb +1 -1
- data/app/views/admin/retailers/show.html.erb +34 -19
- data/app/views/retailers/_list.html.erb +11 -1
- data/app/views/retailers/_retailer.html.erb +1 -0
- data/app/views/retailers/index.html.erb +2 -3
- data/db/migrate/install_spree_retailers.rb +13 -0
- data/lib/spree_retailers/generators/test_app_generator.rb +69 -0
- data/lib/spree_retailers/templates/config/boot.rb +13 -0
- data/lib/spree_retailers/version.rb +1 -1
- data/lib/spree_retailers.rb +6 -12
- metadata +69 -21
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Spree Retailers
|
2
|
-
|
2
|
+
===============
|
3
3
|
|
4
|
-
Spree Retailers is a simple Spree Extension.
|
4
|
+
Spree Retailers is a simple Spree Extension that adds a retailers page as well as a retailers admin.
|
5
5
|
|
6
6
|
|
7
7
|
Demo
|
@@ -12,26 +12,24 @@ To create a spree retailers demo app, run the following:
|
|
12
12
|
rails new spree_retailers_example
|
13
13
|
cd spree_retailers_example
|
14
14
|
echo "gem 'spree', '0.40.2'" >> Gemfile
|
15
|
-
echo "gem 'spree_retailers'
|
16
|
-
rm public/index.html
|
17
|
-
bundle install
|
15
|
+
echo "gem 'spree_retailers'" >> Gemfile
|
16
|
+
rm public/index.html
|
17
|
+
bundle install
|
18
18
|
rake spree:install spree_retailers:install db:migrate db:seed db:admin:create
|
19
19
|
|
20
|
-
|
21
20
|
Or all at once:
|
22
21
|
|
23
|
-
rails new spree_retailers_example; cd spree_retailers_example; echo "gem 'spree', '0.40.2'" >> Gemfile; echo "gem 'spree_retailers'
|
22
|
+
rails new spree_retailers_example; cd spree_retailers_example; echo "gem 'spree', '0.40.2'" >> Gemfile; echo "gem 'spree_retailers'" >> Gemfile; rm public/index.html; bundle install; rake spree:install spree_retailers:install db:migrate db:seed db:admin:create
|
24
23
|
|
25
|
-
`rake db:sample` if you want to...
|
24
|
+
`rake spree_sample:install db:sample` if you want to...
|
26
25
|
|
27
26
|
Then start the server with `rails s`
|
28
27
|
|
29
28
|
|
30
|
-
|
31
29
|
To Do
|
32
30
|
-----
|
33
31
|
|
34
|
-
* Write
|
32
|
+
* Write controller tests
|
35
33
|
|
36
34
|
License
|
37
35
|
-------
|
data/Rakefile
CHANGED
@@ -1,75 +1,51 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'rubygems'
|
3
|
+
begin
|
4
|
+
require 'bundler/setup'
|
5
|
+
rescue LoadError
|
6
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'rake'
|
2
10
|
require 'rake/testtask'
|
11
|
+
#require 'rake/rdoctask'
|
12
|
+
|
3
13
|
Bundler::GemHelper.install_tasks
|
4
14
|
|
5
|
-
Rake::TestTask.new do |t|
|
6
|
-
t.libs <<
|
15
|
+
Rake::TestTask.new(:test) do |t|
|
16
|
+
t.libs << 'lib'
|
17
|
+
t.libs << 'test'
|
7
18
|
t.pattern = 'test/**/*_test.rb'
|
8
|
-
t.verbose =
|
19
|
+
t.verbose = false
|
9
20
|
end
|
10
21
|
|
11
|
-
|
12
|
-
task :default => [ :test ]
|
13
|
-
|
14
|
-
|
15
|
-
|
22
|
+
task :default => :test
|
16
23
|
|
17
24
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
# TODO: pull in the spree/core/Rakefile bits that set up for testing
|
22
|
-
desc "Regenerates a Rails 3 app for testing"
|
25
|
+
desc "Builds dummy app for testing"
|
23
26
|
task :test_app do
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
files = `gem contents spree`.split("\n").select{|file| file.match("test_app_generator")}
|
29
|
-
if files.length == 1
|
30
|
-
require files.first
|
31
|
-
class SpreeRetailersTestAppGenerator < Spree::Generators::TestAppGenerator
|
32
|
-
def tweak_gemfile
|
33
|
-
append_file "Gemfile" ,
|
34
|
-
<<-gems
|
35
|
-
gem 'activemerchant'
|
36
|
-
gem 'spree_core', '>=0.40.2'
|
37
|
-
gem 'spree_auth', '>=0.40.2'
|
38
|
-
gem 'spree_retailers', :path => "#{File.dirname(__FILE__)}"
|
39
|
-
gems
|
40
|
-
end
|
41
|
-
|
42
|
-
def install_spree_gems
|
43
|
-
|
44
|
-
puts "-----------------------------------------"
|
45
|
-
puts "Installing gems..."
|
46
|
-
`bundle install --gemfile=spec/test_app/Gemfile`
|
47
|
-
puts "-----------------------------------------"
|
48
|
-
|
49
|
-
inside "test_app" do
|
50
|
-
run 'rake spree_core:install'
|
51
|
-
run 'rake spree_auth:install'
|
52
|
-
run 'rake spree_retailers:install'
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def migrate_db
|
57
|
-
run_migrations
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
SpreeRetailersTestAppGenerator.start
|
62
|
-
|
63
|
-
puts "spec/test_app created. "
|
64
|
-
|
65
|
-
else
|
66
|
-
puts "Failed: Could not find lib/generators/spree/test_app_generator.rb"
|
67
|
-
end
|
27
|
+
require 'spree_retailers/generators/test_app_generator'
|
28
|
+
SpreeRetailers::Generators::TestAppGenerator.start
|
68
29
|
end
|
69
30
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
31
|
+
|
32
|
+
|
33
|
+
#require 'bundler'
|
34
|
+
#require 'rake/testtask'
|
35
|
+
#Bundler::GemHelper.install_tasks
|
36
|
+
#
|
37
|
+
#Rake::TestTask.new do |t|
|
38
|
+
# t.libs << "lib"
|
39
|
+
# t.pattern = 'test/**/*_test.rb'
|
40
|
+
# t.verbose = true
|
41
|
+
#end
|
42
|
+
#
|
43
|
+
#desc "Default Task"
|
44
|
+
#task :default => [ :test ]
|
45
|
+
#
|
46
|
+
#
|
47
|
+
#desc "Builds dummy app for testing"
|
48
|
+
#task :test_app do
|
49
|
+
# require 'spree_retailers/generators/test_app_generator'
|
50
|
+
# SpreeRetailers::Generators::TestAppGenerator.start
|
51
|
+
#end
|
@@ -1,10 +1,7 @@
|
|
1
1
|
class RetailersController < Spree::BaseController
|
2
2
|
|
3
3
|
def index
|
4
|
-
@retailers = Retailer.order(:name)
|
5
|
-
#if request.xhr?
|
6
|
-
# render :partial => 'list', :layout => false, :locals => { :retailers => @retailers }
|
7
|
-
#end
|
4
|
+
@retailers = Retailer.order(:state, :name)
|
8
5
|
end
|
9
6
|
|
10
7
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
module RetailersHelper
|
2
|
+
|
3
|
+
def state_nav_helper
|
4
|
+
retailers = Retailer.select(:state).group(:state).order(:state).all
|
5
|
+
return "" unless 1 < retailers.length
|
6
|
+
retailers.collect{|retailer| link_to(retailer.state, "##{retailer.state.downcase}") }.join(" | ").html_safe
|
7
|
+
end
|
8
|
+
|
9
|
+
end
|
data/app/models/retailer.rb
CHANGED
@@ -1,6 +1,19 @@
|
|
1
1
|
class Retailer < ActiveRecord::Base
|
2
2
|
|
3
3
|
validates_presence_of :name, :address, :city, :state, :zipcode
|
4
|
+
validates :email, :email => true, :allow_blank => true
|
5
|
+
|
6
|
+
validates_numericality_of :latitude, :longitude, :allow_blank => true
|
7
|
+
|
8
|
+
before_validation :geocode, :if => :geocode?
|
9
|
+
|
10
|
+
|
11
|
+
has_attached_file :logo,
|
12
|
+
:styles => { :mini => '48x48>', :thumb => '120x100#', :large => '450x400#' },
|
13
|
+
:default_style => :thumb,
|
14
|
+
:url => "/assets/retailers/:id/:style/:basename.:extension",
|
15
|
+
:path => ":rails_root/public/assets/retailers/:id/:style/:basename.:extension"
|
16
|
+
|
4
17
|
|
5
18
|
[:address2, :phone, :email].each do |property|
|
6
19
|
define_method "has_#{property.to_s}?" do
|
@@ -10,16 +23,60 @@ class Retailer < ActiveRecord::Base
|
|
10
23
|
end
|
11
24
|
|
12
25
|
def has_url?
|
13
|
-
(self.url.nil? || self.url.empty?
|
26
|
+
!(self.url.nil? || self.url.empty? || self.url == "http://")
|
14
27
|
end
|
15
28
|
|
29
|
+
def has_logo?
|
30
|
+
!self.logo_file_name.blank?
|
31
|
+
end
|
16
32
|
|
17
33
|
def url=(value)
|
18
|
-
val = value.strip.downcase
|
34
|
+
val = value.to_s.strip.downcase
|
19
35
|
if val.match(/^http(s)?:\/\//) == nil
|
20
36
|
val = "http://" + val
|
21
37
|
end
|
22
38
|
write_attribute :url, val
|
23
39
|
end
|
24
40
|
|
41
|
+
def full_address
|
42
|
+
"#{address} #{address2} #{city}, #{state} #{zipcode}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def geocode?
|
46
|
+
(new_record? || changed?) && !address.blank?
|
47
|
+
end
|
48
|
+
|
49
|
+
def geocoded?
|
50
|
+
geokit_success && !(latitude.nil? || longitude.nil?)
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def geocode
|
56
|
+
geo = Geokit::Geocoders::MultiGeocoder.geocode(full_address)
|
57
|
+
if geo.success
|
58
|
+
self.attributes = {
|
59
|
+
:address => geo.street_address,
|
60
|
+
:city => geo.city,
|
61
|
+
:state => geo.state,
|
62
|
+
:zipcode => geo.zip,
|
63
|
+
:latitude => geo.lat,
|
64
|
+
:longitude => geo.lng,
|
65
|
+
:geokit_provider => geo.provider,
|
66
|
+
:geokit_precision => geo.precision,
|
67
|
+
:geokit_accuracy => geo.accuracy,
|
68
|
+
:geokit_success => true
|
69
|
+
}
|
70
|
+
else
|
71
|
+
self.attributes = {
|
72
|
+
:latitude => nil,
|
73
|
+
:longitude => nil,
|
74
|
+
:geokit_provider => nil,
|
75
|
+
:geokit_precision => nil,
|
76
|
+
:geokit_accuracy => nil,
|
77
|
+
:geokit_success => false
|
78
|
+
}
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
25
82
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class EmailValidator < ActiveModel::EachValidator
|
2
|
+
def validate_each(record,attribute,value)
|
3
|
+
begin
|
4
|
+
m = Mail::Address.new(value)
|
5
|
+
# We must check that value contains a domain and that value is an email address
|
6
|
+
r = m.domain && m.address == value
|
7
|
+
t = m.__send__(:tree)
|
8
|
+
# We need to dig into treetop
|
9
|
+
# A valid domain must have dot_atom_text elements size > 1
|
10
|
+
# user@localhost is excluded
|
11
|
+
# treetop must respond to domain
|
12
|
+
# We exclude valid email values like <user@localhost.com>
|
13
|
+
# Hence we use m.__send__(tree).domain
|
14
|
+
r &&= (t.domain.dot_atom_text.elements.size > 1)
|
15
|
+
rescue Exception => e
|
16
|
+
r = false
|
17
|
+
end
|
18
|
+
record.errors[attribute] << (options[:message] || I18n.t(:invalid_email, :scope => [:activerecord, :errors, :messages])) unless r
|
19
|
+
end
|
20
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%= f.field_container :name do %>
|
2
2
|
<%= f.label :name, "Name" %><br />
|
3
|
-
<%= f.text_field :name %>
|
3
|
+
<%= f.text_field :name, :class => 'title' %>
|
4
4
|
<%= error_message_on :retailer, :name %>
|
5
5
|
<% end %>
|
6
6
|
|
@@ -55,3 +55,9 @@
|
|
55
55
|
<%= f.text_field :url %>
|
56
56
|
<%= error_message_on :retailer, :url %>
|
57
57
|
<% end %>
|
58
|
+
|
59
|
+
<%= f.field_container :logo do %>
|
60
|
+
<%= f.label :logo, "Logo Image:" %><br />
|
61
|
+
<%= f.file_field :logo %>
|
62
|
+
<%= error_message_on :retailer, :logo %>
|
63
|
+
<% end %>
|
@@ -1,33 +1,48 @@
|
|
1
1
|
<h1><%= @retailer.name %></h1>
|
2
|
+
|
3
|
+
<%= image_tag @retailer.logo.url if @retailer.has_logo? %>
|
4
|
+
|
2
5
|
<p>
|
3
|
-
|
4
|
-
|
6
|
+
<b>Address:</b><br/>
|
7
|
+
<%= @retailer.address %>
|
5
8
|
<% if @retailer.has_address2? %>
|
6
9
|
<br/>
|
7
10
|
<%= @retailer.address2 %>
|
8
11
|
<% end %>
|
9
|
-
|
10
12
|
<br/>
|
11
|
-
|
12
13
|
<%= @retailer.city %>,
|
13
|
-
<%= @retailer.state %>
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
<
|
18
|
-
|
19
|
-
|
14
|
+
<%= @retailer.state %> <%= @retailer.zipcode %>
|
15
|
+
</p>
|
16
|
+
<% if @retailer.has_phone? %>
|
17
|
+
<p>
|
18
|
+
<b>Phone:</b> <%= @retailer.phone %>
|
19
|
+
</p>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
<% if @retailer.has_email? %>
|
23
|
+
<p>
|
24
|
+
<b>Email:</b> <%= mail_to @retailer.email %>
|
25
|
+
</p>
|
26
|
+
<% end %>
|
27
|
+
|
28
|
+
<% if @retailer.has_url? %>
|
29
|
+
<p>
|
30
|
+
<b>Website URL:</b>: <%= link_to @retailer.url, @retailer.url, :class => 'popup' %>
|
31
|
+
</p>
|
32
|
+
<% end %>
|
20
33
|
|
21
|
-
<% if @retailer.has_email? %>
|
22
|
-
<br/>
|
23
|
-
<%= mail_to @retailer.email %>
|
24
|
-
<% end %>
|
25
34
|
|
26
|
-
|
35
|
+
<% if @retailer.geocoded? %>
|
36
|
+
<p>
|
37
|
+
<b>Latitude:</b> <%= @retailer.latitude %>°
|
27
38
|
<br/>
|
28
|
-
<%=
|
29
|
-
|
30
|
-
|
39
|
+
<b>Longitude:</b> <%= @retailer.longitude %>°
|
40
|
+
<br/>
|
41
|
+
<b>Precision:</b> <%= @retailer.geokit_precision %>
|
42
|
+
<br/>
|
43
|
+
<b>Provider:</b> <%= @retailer.geokit_provider %>
|
44
|
+
</p>
|
45
|
+
<% end %>
|
31
46
|
|
32
47
|
|
33
48
|
<p>
|
@@ -1,6 +1,16 @@
|
|
1
1
|
<% if defined? retailers %>
|
2
2
|
<div class="retailers">
|
3
3
|
<h3>Find <%= Spree::Config[:site_name] %> at the following retail locations:</h3>
|
4
|
-
|
4
|
+
|
5
|
+
<div class="state-nav">
|
6
|
+
<%= state_nav_helper %>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<% retailers.group_by(&:state).each do |state, state_retailers| %>
|
10
|
+
<hr/>
|
11
|
+
<h4 id="<%= state.downcase %>"><%= state %></h4>
|
12
|
+
<%= render :partial => 'retailer', :collection => state_retailers %>
|
13
|
+
<% end %>
|
14
|
+
|
5
15
|
</div>
|
6
16
|
<% end %>
|
@@ -1,5 +1,6 @@
|
|
1
1
|
<% if defined? retailer %>
|
2
2
|
<div class="retailer">
|
3
|
+
<%= image_tag retailer.logo.url, :alt => retailer.name, :class => 'thumb' if retailer.has_logo? %>
|
3
4
|
<p>
|
4
5
|
<b><%= retailer.has_url? ? link_to(retailer.name, retailer.url, :class => 'popup') : retailer.name %></b><br/>
|
5
6
|
<%= retailer.address %>
|
@@ -1,18 +1,17 @@
|
|
1
|
+
<h1><%= t('retailers') %></h1>
|
2
|
+
|
1
3
|
<div class="left">
|
2
4
|
<%= hook :retailers_static_content do %>
|
3
|
-
<h1><%= t('retailers') %></h1>
|
4
5
|
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci ac euismod semper, magna diam porttitor mauris, quis sollicitudin sapien justo in libero. Vestibulum mollis mauris enim. Morbi euismod magna ac lorem rutrum elementum. Donec viverra auctor lobortis. Pellentesque eu est.</p>
|
5
6
|
<% end %>
|
6
7
|
</div>
|
7
8
|
|
8
9
|
<div class="right">
|
9
|
-
|
10
10
|
<%= hook :retailers_list do %>
|
11
11
|
<% unless !@retailers || @retailers.empty? %>
|
12
12
|
<%= render 'list', :retailers => @retailers %>
|
13
13
|
<% end %>
|
14
14
|
<% end %>
|
15
|
-
|
16
15
|
</div>
|
17
16
|
|
18
17
|
<div class="clear"> </div>
|
@@ -11,6 +11,19 @@ class InstallSpreeRetailers < ActiveRecord::Migration
|
|
11
11
|
t.string :phone
|
12
12
|
t.string :email
|
13
13
|
t.string :url
|
14
|
+
|
15
|
+
# geokit
|
16
|
+
t.float :latitude
|
17
|
+
t.float :longitude
|
18
|
+
t.string :geokit_precision, :geokit_provider, :geokit_accuracy
|
19
|
+
t.boolean :geokit_success, :default => false
|
20
|
+
|
21
|
+
# paperclip
|
22
|
+
t.string :logo_file_name
|
23
|
+
t.string :logo_content_type
|
24
|
+
t.string :logo_file_size
|
25
|
+
t.datetime :logo_updated_at
|
26
|
+
|
14
27
|
t.timestamps
|
15
28
|
end
|
16
29
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'spree'
|
2
|
+
require 'generators/spree/test_app_generator'
|
3
|
+
|
4
|
+
module SpreeRetailers
|
5
|
+
module Generators
|
6
|
+
class TestAppGenerator < Spree::Generators::TestAppGenerator
|
7
|
+
|
8
|
+
class_option :app_name, :type => :string,
|
9
|
+
:desc => "The name of the test rails app to generate. Defaults to test_app.",
|
10
|
+
:default => "dummy"
|
11
|
+
|
12
|
+
|
13
|
+
source_paths << File.expand_path("../../templates", __FILE__)
|
14
|
+
|
15
|
+
def install_spree_core
|
16
|
+
inside "test/#{test_app}" do
|
17
|
+
run 'rake spree_core:install'
|
18
|
+
run 'rake spree_auth:install'
|
19
|
+
run 'rake spree_retailers:install'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def generate_app
|
24
|
+
silence_stream(STDOUT) {
|
25
|
+
remove_directory_if_exists("test/#{test_app}")
|
26
|
+
inside "test" do
|
27
|
+
run "rails new #{test_app} -GJTq --skip-gemfile"
|
28
|
+
end
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
def replace_gemfile
|
33
|
+
true
|
34
|
+
end
|
35
|
+
|
36
|
+
def setup_environments
|
37
|
+
remove_file 'config/boot.rb'
|
38
|
+
template 'config/boot.rb'
|
39
|
+
end
|
40
|
+
|
41
|
+
def tweak_gemfile
|
42
|
+
true
|
43
|
+
end
|
44
|
+
|
45
|
+
def create_rspec_gemfile
|
46
|
+
true
|
47
|
+
end
|
48
|
+
|
49
|
+
def create_root
|
50
|
+
self.destination_root = File.expand_path("test/#{test_app}", destination_root)
|
51
|
+
end
|
52
|
+
|
53
|
+
def migrate_db
|
54
|
+
run_migrations
|
55
|
+
end
|
56
|
+
|
57
|
+
protected
|
58
|
+
|
59
|
+
def full_path_for_local_gems
|
60
|
+
<<-gems
|
61
|
+
gem 'spree_core', '>= 0.40.2'
|
62
|
+
gem 'spree_auth', '>= 0.40.2'
|
63
|
+
gem 'spree_retailers', :path => File.expand_path('../../../../', __FILE__)
|
64
|
+
gem 'geokit', '>= 1.5.0'
|
65
|
+
gems
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
# Set up gems listed in the Gemfile.
|
4
|
+
gemfile = File.expand_path('../../Gemfile', __FILE__)
|
5
|
+
begin
|
6
|
+
ENV['BUNDLE_GEMFILE'] = gemfile
|
7
|
+
require 'bundler'
|
8
|
+
Bundler.setup
|
9
|
+
rescue Bundler::GemNotFound => e
|
10
|
+
STDERR.puts e.message
|
11
|
+
STDERR.puts "Try running `bundle install`."
|
12
|
+
exit!
|
13
|
+
end if File.exist?(gemfile)
|
data/lib/spree_retailers.rb
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
if ENV["RAILS_ENV"] != "production"
|
2
|
+
require 'spree_core'
|
3
|
+
require 'spree_auth'
|
4
|
+
require 'geokit'
|
5
|
+
end
|
6
|
+
|
1
7
|
require 'spree_retailers/version'
|
2
8
|
require 'spree_retailers/custom_hooks'
|
3
9
|
|
@@ -7,17 +13,5 @@ module SpreeRetailers
|
|
7
13
|
|
8
14
|
config.autoload_paths += %W(#{config.root}/lib)
|
9
15
|
|
10
|
-
#initializer "static assets" do |app|
|
11
|
-
# app.middleware.insert_after ::ActionDispatch::Static, ::ActionDispatch::Static, "#{config.root}/public"
|
12
|
-
#end
|
13
|
-
|
14
|
-
#def self.activate
|
15
|
-
# #Dir["../app/**/*.rb"].each do |c|
|
16
|
-
# # puts c
|
17
|
-
# # #Rails.env.production? ? require(c) : load(c)
|
18
|
-
# #end
|
19
|
-
#end
|
20
|
-
|
21
|
-
#config.to_prepare &method(:activate).to_proc
|
22
16
|
end
|
23
17
|
end
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_retailers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 40
|
8
|
-
- 0
|
9
|
-
- 1
|
10
|
-
version: 0.40.0.1
|
4
|
+
prerelease:
|
5
|
+
version: 0.40.0.2
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Spencer Steffen
|
@@ -15,40 +10,87 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-02-08 00:00:00 -08:00
|
19
14
|
default_executable:
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
22
17
|
name: spree_core
|
23
|
-
prerelease: false
|
24
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
19
|
none: false
|
26
20
|
requirements:
|
27
21
|
- - ">="
|
28
22
|
- !ruby/object:Gem::Version
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
- 40
|
32
|
-
- 2
|
33
23
|
version: 0.40.2
|
34
24
|
type: :runtime
|
25
|
+
prerelease: false
|
35
26
|
version_requirements: *id001
|
36
27
|
- !ruby/object:Gem::Dependency
|
37
28
|
name: spree_auth
|
38
|
-
prerelease: false
|
39
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
30
|
none: false
|
41
31
|
requirements:
|
42
32
|
- - ">="
|
43
33
|
- !ruby/object:Gem::Version
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
- 40
|
47
|
-
- 2
|
48
34
|
version: 0.40.2
|
49
35
|
type: :runtime
|
36
|
+
prerelease: false
|
50
37
|
version_requirements: *id002
|
51
|
-
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: mail
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.2.0
|
46
|
+
type: :runtime
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: geokit
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 1.5.0
|
57
|
+
type: :runtime
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: *id004
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: spree
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.40.2
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *id005
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: shoulda
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 2.11.3
|
79
|
+
type: :development
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: *id006
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: sqlite3-ruby
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.3.2
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: *id007
|
93
|
+
description: Spree Retailers adds a retailer page and admin to Spree.
|
52
94
|
email:
|
53
95
|
- spencer@citrusme.com
|
54
96
|
executables: []
|
@@ -62,12 +104,16 @@ files:
|
|
62
104
|
- config/locales/en.yml
|
63
105
|
- config/routes.rb
|
64
106
|
- lib/spree_retailers/custom_hooks.rb
|
107
|
+
- lib/spree_retailers/generators/test_app_generator.rb
|
108
|
+
- lib/spree_retailers/templates/config/boot.rb
|
65
109
|
- lib/spree_retailers/version.rb
|
66
110
|
- lib/spree_retailers.rb
|
67
111
|
- lib/tasks/install.rake
|
68
112
|
- app/controllers/admin/retailers_controller.rb
|
69
113
|
- app/controllers/retailers_controller.rb
|
114
|
+
- app/helpers/retailers_helper.rb
|
70
115
|
- app/models/retailer.rb
|
116
|
+
- app/validators/email_validator.rb
|
71
117
|
- app/views/admin/hooks/_retailers_tab.html.erb
|
72
118
|
- app/views/admin/retailers/_form.html.erb
|
73
119
|
- app/views/admin/retailers/edit.html.erb
|
@@ -79,7 +125,7 @@ files:
|
|
79
125
|
- app/views/retailers/index.html.erb
|
80
126
|
- db/migrate/install_spree_retailers.rb
|
81
127
|
- Rakefile
|
82
|
-
has_rdoc:
|
128
|
+
has_rdoc: true
|
83
129
|
homepage: http://github.com/citrus/spree_retailers
|
84
130
|
licenses: []
|
85
131
|
|
@@ -93,6 +139,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
93
139
|
requirements:
|
94
140
|
- - ">="
|
95
141
|
- !ruby/object:Gem::Version
|
142
|
+
hash: 1791211122067461475
|
96
143
|
segments:
|
97
144
|
- 0
|
98
145
|
version: "0"
|
@@ -101,13 +148,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
148
|
requirements:
|
102
149
|
- - ">="
|
103
150
|
- !ruby/object:Gem::Version
|
151
|
+
hash: 1791211122067461475
|
104
152
|
segments:
|
105
153
|
- 0
|
106
154
|
version: "0"
|
107
155
|
requirements: []
|
108
156
|
|
109
157
|
rubyforge_project:
|
110
|
-
rubygems_version: 1.
|
158
|
+
rubygems_version: 1.5.0
|
111
159
|
signing_key:
|
112
160
|
specification_version: 3
|
113
161
|
summary: Spree Retailers adds a retailer admin to Spree.
|