spree-last-address 1.0.1

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.
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: []