initial commit
This commit is contained in:
commit
fbfd7b244d
|
@ -0,0 +1,7 @@
|
||||||
|
\#*
|
||||||
|
*~
|
||||||
|
.#*
|
||||||
|
.DS_Store
|
||||||
|
tmp
|
||||||
|
*.swp
|
||||||
|
spec/test_app
|
|
@ -0,0 +1,23 @@
|
||||||
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the Rails Dog LLC nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from this
|
||||||
|
software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -0,0 +1,30 @@
|
||||||
|
Spree Sitemap Generator
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Spree sitemap generator is a sitemap generator based on the sitemap_generator gem http://github.com/kjvarga/sitemap_generator. It adheres to the Sitemap 0.9 protocol specification.
|
||||||
|
|
||||||
|
Installation
|
||||||
|
=======
|
||||||
|
|
||||||
|
gem install spree-sitemap-generator
|
||||||
|
|
||||||
|
Example goes here.
|
||||||
|
|
||||||
|
Setup
|
||||||
|
======
|
||||||
|
|
||||||
|
echo "public/sitemap*" >> .gitignore
|
||||||
|
|
||||||
|
Features
|
||||||
|
=====
|
||||||
|
- Notifies search engine of new sitemaps (Google, Yahoo, Ask, Bing)
|
||||||
|
- Compresses sitemaps with gzip
|
||||||
|
- Provides basic sitemap of a Spree site
|
||||||
|
- Allows you to easily add additional sitemaps for pages you add to your site
|
||||||
|
|
||||||
|
|
||||||
|
Special Thanks
|
||||||
|
=====
|
||||||
|
|
||||||
|
|
||||||
|
Copyright (c) 2010 [name of extension creator], released under the New BSD License
|
|
@ -0,0 +1,31 @@
|
||||||
|
require File.expand_path('../../config/application', __FILE__)
|
||||||
|
|
||||||
|
require 'rubygems'
|
||||||
|
require 'rake'
|
||||||
|
require 'rake/testtask'
|
||||||
|
require 'rake/packagetask'
|
||||||
|
require 'rake/gempackagetask'
|
||||||
|
|
||||||
|
spec = eval(File.read('spree_sitemap_generator.gemspec'))
|
||||||
|
|
||||||
|
Rake::GemPackageTask.new(spec) do |p|
|
||||||
|
p.gem_spec = spec
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Release to gemcutter"
|
||||||
|
task :release => :package do
|
||||||
|
require 'rake/gemcutter'
|
||||||
|
Rake::Gemcutter::Tasks.new(spec).define
|
||||||
|
Rake::Task['gem:push'].invoke
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Default Task"
|
||||||
|
task :default => [ :spec ]
|
||||||
|
|
||||||
|
require 'rspec/core/rake_task'
|
||||||
|
RSpec::Core::RakeTask.new
|
||||||
|
|
||||||
|
# require 'cucumber/rake/task'
|
||||||
|
# Cucumber::Rake::Task.new do |t|
|
||||||
|
# t.cucumber_opts = %w{--format pretty}
|
||||||
|
# end
|
|
@ -0,0 +1,3 @@
|
||||||
|
Rails.application.routes.draw do
|
||||||
|
# Add your extension routes here
|
||||||
|
end
|
|
@ -0,0 +1,13 @@
|
||||||
|
module SpreeSitemapGenerator
|
||||||
|
module Generators
|
||||||
|
class InstallGenerator < Rails::Generators::Base
|
||||||
|
source_root File.expand_path("../../templates", __FILE__)
|
||||||
|
|
||||||
|
desc "Configures your Rails application for use with spree_sitemap_generator"
|
||||||
|
def copy_config
|
||||||
|
directory "config"
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,31 @@
|
||||||
|
SitemapGenerator::Sitemap.add_links do |sitemap|
|
||||||
|
# Put links creation logic here.
|
||||||
|
#
|
||||||
|
# The root path '/' and sitemap index file are added automatically.
|
||||||
|
# Links are added to the Sitemap in the order they are specified.
|
||||||
|
#
|
||||||
|
# Usage: sitemap.add(path, options={})
|
||||||
|
# (default options are used if you don't specify)
|
||||||
|
#
|
||||||
|
# Defaults: :priority => 0.5, :changefreq => 'weekly',
|
||||||
|
# :lastmod => Time.now, :host => default_host
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
#
|
||||||
|
# Add '/articles'
|
||||||
|
#
|
||||||
|
# sitemap.add articles_path, :priority => 0.7, :changefreq => 'daily'
|
||||||
|
#
|
||||||
|
# Add individual articles:
|
||||||
|
#
|
||||||
|
# Article.find_each do |article|
|
||||||
|
# sitemap.add article_path(article), :lastmod => article.updated_at
|
||||||
|
# end
|
||||||
|
sitemap.add_login
|
||||||
|
sitemap.add_signup
|
||||||
|
sitemap.add_account
|
||||||
|
sitemap.add_password_reset
|
||||||
|
sitemap.add_taxons
|
||||||
|
sitemap.add_products
|
||||||
|
end
|
|
@ -0,0 +1,37 @@
|
||||||
|
require 'spree_core'
|
||||||
|
require 'spree_sitemap_generator_hooks'
|
||||||
|
require 'sitemap_generator'
|
||||||
|
|
||||||
|
module SpreeSitemapGenerator
|
||||||
|
class Engine < Rails::Engine
|
||||||
|
|
||||||
|
config.autoload_paths += %W(#{config.root}/lib)
|
||||||
|
|
||||||
|
def self.activate
|
||||||
|
|
||||||
|
ActiveRecord::Relation.class_eval do
|
||||||
|
def last_updated
|
||||||
|
last_update = order('updated_at DESC').first
|
||||||
|
last_update.try(:updated_at)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
ActiveRecord::Base.class_eval do
|
||||||
|
def self.last_updated
|
||||||
|
scoped.last_updated
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
SitemapGenerator::Sitemap.default_host = "http://#{Spree::Config[:site_url]}"
|
||||||
|
|
||||||
|
require 'spree_sitemap_generator/spree_defaults'
|
||||||
|
SitemapGenerator::LinkSet.send :include, SpreeSitemapGenerator::SpreeDefaults
|
||||||
|
|
||||||
|
Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
|
||||||
|
Rails.env.production? ? require(c) : load(c)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
config.to_prepare &method(:activate).to_proc
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,41 @@
|
||||||
|
module SpreeSitemapGenerator::SpreeDefaults
|
||||||
|
def default_url_options
|
||||||
|
{:host => URI.parse(SitemapGenerator::Sitemap.default_host).host}
|
||||||
|
end
|
||||||
|
include ::Rails.application.routes.url_helpers
|
||||||
|
|
||||||
|
def add_login(options={})
|
||||||
|
add(login_path, options)
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_signup(options={})
|
||||||
|
add(signup_path, options)
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_account(options={})
|
||||||
|
add(account_path, options)
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_password_reset(options={})
|
||||||
|
add(new_password_reset_path, options)
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_products(options={})
|
||||||
|
active_products = Product.active
|
||||||
|
|
||||||
|
add(products_path, options.merge(:lastmod => active_products.last_updated))
|
||||||
|
active_products.each do |product|
|
||||||
|
add(product_path(product), options.merge(:lastmod => product.updated_at))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_taxons(options={})
|
||||||
|
Taxon.roots.each {|taxon| add_taxon(taxon, options) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_taxon(taxon, options={})
|
||||||
|
add(nested_taxons_path(taxon.permalink), options.merge(:lastmod => taxon.products.last_updated))
|
||||||
|
taxon.children.each {|child| add_taxon(child, options) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
class SpreeSitemapGeneratorHooks < Spree::ThemeSupport::HookListener
|
||||||
|
# custom hooks go here
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
# add custom rake tasks here
|
||||||
|
desc 'test it'
|
||||||
|
task :foo do
|
||||||
|
puts 1
|
||||||
|
end
|
|
@ -0,0 +1,31 @@
|
||||||
|
# This file is copied to ~/spec when you run 'ruby script/generate rspec'
|
||||||
|
# from the project root directory.
|
||||||
|
ENV["RAILS_ENV"] ||= 'test'
|
||||||
|
require File.expand_path("../../../config/environment", __FILE__)
|
||||||
|
require 'rspec/rails'
|
||||||
|
require 'fabrication'
|
||||||
|
|
||||||
|
# Requires supporting files with custom matchers and macros, etc,
|
||||||
|
# in ./support/ and its subdirectories.
|
||||||
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
||||||
|
|
||||||
|
RSpec.configure do |config|
|
||||||
|
# == Mock Framework
|
||||||
|
#
|
||||||
|
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
||||||
|
#
|
||||||
|
# config.mock_with :mocha
|
||||||
|
# config.mock_with :flexmock
|
||||||
|
# config.mock_with :rr
|
||||||
|
config.mock_with :rspec
|
||||||
|
|
||||||
|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
||||||
|
|
||||||
|
#config.include Devise::TestHelpers, :type => :controller
|
||||||
|
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
||||||
|
# examples within a transaction, comment the following line or assign false
|
||||||
|
# instead of true.
|
||||||
|
config.use_transactional_fixtures = true
|
||||||
|
end
|
||||||
|
|
||||||
|
@configuration ||= AppConfiguration.find_or_create_by_name("Default configuration")
|
|
@ -0,0 +1,22 @@
|
||||||
|
Gem::Specification.new do |s|
|
||||||
|
s.platform = Gem::Platform::RUBY
|
||||||
|
s.name = 'spree_sitemap_generator'
|
||||||
|
s.version = '3.0.2'
|
||||||
|
s.summary = 'Add gem summary here'
|
||||||
|
#s.description = 'Add (optional) gem description here'
|
||||||
|
s.required_ruby_version = '>= 1.8.7'
|
||||||
|
|
||||||
|
# s.author = 'David Heinemeier Hansson'
|
||||||
|
# s.email = 'david@loudthinking.com'
|
||||||
|
# s.homepage = 'http://www.rubyonrails.org'
|
||||||
|
# s.rubyforge_project = 'actionmailer'
|
||||||
|
|
||||||
|
s.files = Dir['CHANGELOG', 'README.md', 'LICENSE', 'lib/**/*', 'app/**/*']
|
||||||
|
s.require_path = 'lib'
|
||||||
|
s.requirements << 'none'
|
||||||
|
|
||||||
|
s.has_rdoc = true
|
||||||
|
|
||||||
|
s.add_dependency('spree_core', '>= 0.30.1')
|
||||||
|
s.add_dependency('sitemap_generator', '>= 1.3.4')
|
||||||
|
end
|
Loading…
Reference in New Issue