spree-last-address 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6cd710be6ac325810be49c2bed3cd6b3a25a5820
4
+ data.tar.gz: e56c61ca01ada3ee8ba85e1eaa0ddf275300de21
5
+ SHA512:
6
+ metadata.gz: d891f0373749514ff53fa144205710dc123559a7caad93218e34d109f66e61ea49c3d1aa88e33cbbae32a2e0974ee9963696b36aa2f85caa18c7546114cd949b
7
+ data.tar.gz: e27157ca2835b82f41e68582120647790515a242cb8a4e668ec45f8a6ac276b060d61bad89c567ff89d3a87686a22fff49691d3292ea16af39d4b9aca5db6832
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .rvmrc
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Redistribution and use in source and binary forms, with or without modification,
2
+ are permitted provided that the following conditions are met:
3
+
4
+ * Redistributions of source code must retain the above copyright notice,
5
+ this list of conditions and the following disclaimer.
6
+ * Redistributions in binary form must reproduce the above copyright notice,
7
+ this list of conditions and the following disclaimer in the documentation
8
+ and/or other materials provided with the distribution.
9
+ * Neither the name of the Rails Dog LLC nor the names of its
10
+ contributors may be used to endorse or promote products derived from this
11
+ software without specific prior written permission.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
22
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+ Last Address extension for Spree
2
+ ================================
3
+
4
+ During checkout, causes the address to be prefilled with the address from their most recent order or
5
+ the user’s saved address (if available).
6
+
7
+ This relieves the customer of having to type in his address again on a second order. (The
8
+ unnecessary typing make them more likely to bounce instead of completing the order.)
9
+
10
+ If your app allows a user to set and edit their "preferred" or "default" address (as reflected by
11
+ `user.bill_address`/`user.ship_address`), and the user has set a preferred address for their
12
+ account, that address will take priority and be used instead of the address from their most recent
13
+ order. (Similar to [spree-default-addresses](https://github.com/swistak/spree-default-addresses).)
14
+
15
+ As of Spree 1.2, the `belongs_to :bill_address` and `belongs_to :ship_address` associations are
16
+ provided for the `Spree::User` model by the spree_auth_devise gem . If those associations are not
17
+ available or if the user doesn't have a saved address (which will be the case unless you've provided
18
+ a way in your app to set an address), then it will just use the address from user's most recent
19
+ order.
20
+
21
+ Installation
22
+ ============
23
+
24
+ Just put this in your `Gemfile`:
25
+
26
+ gem 'spree_last_address', '~> 1.0.0'
27
+
28
+ License
29
+ =======
30
+
31
+ Copyright (c) 2010 Torsten Rüger, released under the New BSD License
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ CheckoutController.class_eval do
3
+
4
+ private
5
+
6
+ def before_address
7
+ return if @order.bill_address or @order.ship_address
8
+ last_used_bill_address, last_used_ship_address = SpreeLastAddress.find_last_used_addresses(@order.email)
9
+ preferred_bill_address, preferred_ship_address = current_user.bill_address, current_user.ship_address if current_user.respond_to?(:bill_address) && current_user.respond_to?(:ship_address)
10
+ @order.bill_address ||= preferred_bill_address || last_used_bill_address || Address.default
11
+ @order.ship_address ||= preferred_ship_address || last_used_ship_address || Address.default
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ module SpreeLastAddress
2
+ def self.version
3
+ '1.0.1'
4
+ end
5
+ end
@@ -0,0 +1,27 @@
1
+ require 'spree_last_address/version'
2
+
3
+ module SpreeLastAddress
4
+ class Engine < Rails::Engine
5
+
6
+ config.autoload_paths += %W(#{config.root}/lib)
7
+
8
+ def self.activate
9
+ Dir.glob(File.join(File.dirname(__FILE__), '../app/**/*_decorator*.rb')) do |c|
10
+ Rails.env.production? ? require(c) : load(c)
11
+ end
12
+ end
13
+
14
+ config.to_prepare &method(:activate).to_proc
15
+ end
16
+
17
+ class << self
18
+ def find_last_used_addresses(email)
19
+ past = Spree::Order.order("id desc").where(:email => email).where("state != 'cart'").limit(8)
20
+ if order = past.detect(&:bill_address)
21
+ bill_address = order.bill_address.clone if order.bill_address
22
+ ship_address = order.ship_address.clone if order.ship_address
23
+ end
24
+ return bill_address, ship_address
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,24 @@
1
+ namespace :spree_last_address do
2
+ desc "Copies all migrations and assets (NOTE: This will be obsolete with Rails 3.1)"
3
+ task :install do
4
+ Rake::Task['spree_last_address:install:migrations'].invoke
5
+ Rake::Task['spree_last_address:install:assets'].invoke
6
+ end
7
+
8
+ namespace :install do
9
+ desc "Copies all migrations (NOTE: This will be obsolete with Rails 3.1)"
10
+ task :migrations do
11
+ source = File.join(File.dirname(__FILE__), '..', '..', 'db')
12
+ destination = File.join(Rails.root, 'db')
13
+ Spree::FileUtilz.mirror_files(source, destination)
14
+ end
15
+
16
+ desc "Copies all assets (NOTE: This will be obsolete with Rails 3.1)"
17
+ task :assets do
18
+ source = File.join(File.dirname(__FILE__), '..', '..', 'public')
19
+ destination = File.join(Rails.root, 'public')
20
+ puts "INFO: Mirroring assets from #{source} to #{destination}"
21
+ Spree::FileUtilz.mirror_files(source, destination)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'spree_last_address/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.platform = Gem::Platform::RUBY
7
+ s.name = 'spree-last-address'
8
+ s.version = SpreeLastAddress.version
9
+ s.summary = "Prefill address with last-used address"
10
+ s.description = "During checkout, causes the address to be prefilled with the address from their most recent order or the user's saved address."
11
+
12
+ s.author = 'Torsten Rüger'
13
+ s.email = 'torsten@villataika.fi'
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.require_path = 'lib'
17
+
18
+ s.add_dependency 'spree_core', '~> 1.0'
19
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree-last-address
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Torsten Rüger
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: spree_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ description: During checkout, causes the address to be prefilled with the address
28
+ from their most recent order or the user's saved address.
29
+ email: torsten@villataika.fi
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - .gitignore
35
+ - Gemfile
36
+ - LICENSE
37
+ - README.md
38
+ - Rakefile
39
+ - app/controllers/spree/checkout_controller_decorator.rb
40
+ - lib/spree_last_address.rb
41
+ - lib/spree_last_address/version.rb
42
+ - lib/tasks/install.rake
43
+ - spree_last_address.gemspec
44
+ homepage:
45
+ licenses: []
46
+ metadata: {}
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubyforge_project:
63
+ rubygems_version: 2.1.10
64
+ signing_key:
65
+ specification_version: 4
66
+ summary: Prefill address with last-used address
67
+ test_files: []