From 833e597cdadfdf0dcc2201688db5dee694206aea Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Wed, 30 Jan 2013 22:42:43 +0100 Subject: [PATCH] Upgrade the extension to work with Spree 1.2 * Now that we need to pass the shipment.. * We need to copy the shipped_email text.. --- app/assets/javascripts/admin/spree_test.js | 1 + app/assets/javascripts/store/spree_test.js | 1 + app/assets/stylesheets/admin/spree_test.css | 3 ++ app/assets/stylesheets/store/spree_test.css | 3 ++ app/controllers/admin/dhls_controller.rb | 3 -- .../spree/admin/dhls_controller.rb | 5 ++++ .../admin/shipments_controller_decorator.rb | 9 +++--- .../shipping_method_controller_decorator.rb | 3 ++ app/overrides/dhl_links.rb | 20 +++++++++++++ .../admin/dhls/_address_label.html.erb | 0 .../admin/dhls/_method_details_form.html.erb | 0 .../{ => spree}/admin/dhls/index.html.erb | 0 .../admin/shipments/dhllabel.text.erb | 0 .../dhls/_tracking_description.text.erb | 0 .../shipment_mailer/shipped_email.text.erb | 18 ++++++++++++ config/routes.rb | 2 +- .../sysmocom_dhl/install/install_generator.rb | 29 +++++++++++++++++++ lib/sysmocom_dhl.rb | 18 ++---------- lib/sysmocom_dhl/engine.rb | 22 ++++++++++++++ lib/sysmocom_dhl_hooks.rb | 13 --------- lib/tasks/install.rake | 25 ---------------- lib/tasks/sysmocom_dhl.rake | 1 - sysmocom_dhl.gemspec | 6 ++-- 23 files changed, 115 insertions(+), 67 deletions(-) create mode 100644 app/assets/javascripts/admin/spree_test.js create mode 100644 app/assets/javascripts/store/spree_test.js create mode 100644 app/assets/stylesheets/admin/spree_test.css create mode 100644 app/assets/stylesheets/store/spree_test.css delete mode 100644 app/controllers/admin/dhls_controller.rb create mode 100644 app/controllers/spree/admin/dhls_controller.rb rename app/controllers/{ => spree}/admin/shipments_controller_decorator.rb (65%) create mode 100644 app/controllers/spree/shipping_method_controller_decorator.rb create mode 100644 app/overrides/dhl_links.rb rename app/views/{ => spree}/admin/dhls/_address_label.html.erb (100%) rename app/views/{ => spree}/admin/dhls/_method_details_form.html.erb (100%) rename app/views/{ => spree}/admin/dhls/index.html.erb (100%) rename app/views/{ => spree}/admin/shipments/dhllabel.text.erb (100%) rename app/views/{ => spree}/shipment_mailer/dhls/_tracking_description.text.erb (100%) create mode 100644 app/views/spree/shipment_mailer/shipped_email.text.erb create mode 100644 lib/generators/sysmocom_dhl/install/install_generator.rb create mode 100644 lib/sysmocom_dhl/engine.rb delete mode 100644 lib/sysmocom_dhl_hooks.rb delete mode 100644 lib/tasks/install.rake delete mode 100644 lib/tasks/sysmocom_dhl.rake diff --git a/app/assets/javascripts/admin/spree_test.js b/app/assets/javascripts/admin/spree_test.js new file mode 100644 index 0000000..a3b2c53 --- /dev/null +++ b/app/assets/javascripts/admin/spree_test.js @@ -0,0 +1 @@ +//= require admin/spree_core diff --git a/app/assets/javascripts/store/spree_test.js b/app/assets/javascripts/store/spree_test.js new file mode 100644 index 0000000..d5cb5c7 --- /dev/null +++ b/app/assets/javascripts/store/spree_test.js @@ -0,0 +1 @@ +//= require store/spree_core diff --git a/app/assets/stylesheets/admin/spree_test.css b/app/assets/stylesheets/admin/spree_test.css new file mode 100644 index 0000000..21ef02a --- /dev/null +++ b/app/assets/stylesheets/admin/spree_test.css @@ -0,0 +1,3 @@ +/* + *= require admin/spree_core +*/ diff --git a/app/assets/stylesheets/store/spree_test.css b/app/assets/stylesheets/store/spree_test.css new file mode 100644 index 0000000..94dbe33 --- /dev/null +++ b/app/assets/stylesheets/store/spree_test.css @@ -0,0 +1,3 @@ +/* + *= require store/spree_core +*/ diff --git a/app/controllers/admin/dhls_controller.rb b/app/controllers/admin/dhls_controller.rb deleted file mode 100644 index d705c10..0000000 --- a/app/controllers/admin/dhls_controller.rb +++ /dev/null @@ -1,3 +0,0 @@ -class Admin::DhlsController < Admin::BaseController - respond_to :html -end diff --git a/app/controllers/spree/admin/dhls_controller.rb b/app/controllers/spree/admin/dhls_controller.rb new file mode 100644 index 0000000..4f8fabe --- /dev/null +++ b/app/controllers/spree/admin/dhls_controller.rb @@ -0,0 +1,5 @@ +class Spree::Admin::DhlsController < Spree::Admin::BaseController + respond_to :html +end + +puts("LOADED\n"); diff --git a/app/controllers/admin/shipments_controller_decorator.rb b/app/controllers/spree/admin/shipments_controller_decorator.rb similarity index 65% rename from app/controllers/admin/shipments_controller_decorator.rb rename to app/controllers/spree/admin/shipments_controller_decorator.rb index 7609ec1..affa38c 100644 --- a/app/controllers/admin/shipments_controller_decorator.rb +++ b/app/controllers/spree/admin/shipments_controller_decorator.rb @@ -1,7 +1,6 @@ -Admin::ShipmentsController.class_eval do +Spree::Admin::ShipmentsController.class_eval do def dhllabel - load_shipment - name = '%s_dhllabel.csv' % [@order.number] + name = '%s_dhllabel.csv' % [order.number] headers["Content-type"] = "text/plain; charset=iso-8859-15" headers["Cache-Control"] = "no-cache, max-age=0, must-revalidate" headers["Pragma"] = "no-cache" @@ -9,8 +8,8 @@ Admin::ShipmentsController.class_eval do headers["Content-Disposition"] = "attachment; filename=\"%s\"" % name # Try hard to render it as latin1 - res = render + res = render :locals => { :shipment => shipment } response.charset = 'iso-8859-15' - response.body = Iconv.conv('iso-8859-15', 'utf-8', res) + response.body = Iconv.conv('iso-8859-15', 'utf-8', res[0]) end end diff --git a/app/controllers/spree/shipping_method_controller_decorator.rb b/app/controllers/spree/shipping_method_controller_decorator.rb new file mode 100644 index 0000000..0d42bb2 --- /dev/null +++ b/app/controllers/spree/shipping_method_controller_decorator.rb @@ -0,0 +1,3 @@ +Spree::ShippingMethod.class_eval do + attr_accessible :method_details +end diff --git a/app/overrides/dhl_links.rb b/app/overrides/dhl_links.rb new file mode 100644 index 0000000..a5c86c0 --- /dev/null +++ b/app/overrides/dhl_links.rb @@ -0,0 +1,20 @@ +Deface::Override.new(:virtual_path => "spree/layouts/admin", + :name => "dhl_admin_tabs", + :insert_bottom => "[data-hook='admin_tabs'], #admin_tabs[data-hook]", + :text => "<%= tab(:dhls, :url => spree.admin_dhls_path) %>", + :disabled => false, + :original => 'b06db401e133fa2491f542e73196e0bb79a4ca05') + +Deface::Override.new(:virtual_path => "spree/admin/shipments/edit", + :name => "dhl_label", + :insert_bottom => "[data-hook='admin_shipment_edit_buttons']", + :partial => 'spree/admin/dhls/address_label', + :original => 'e5254ea08fdafd6dfaf37a2631fdc384f0a4a3ae') + +Deface::Override.new(:virtual_path => "spree/admin/shipping_methods/_form", + :name => 'dhl_shipment_method', + :insert_bottom => "[data-hook='admin_shipping_method_form_fields']", + :partial => 'spree/admin/dhls/method_details_form') + + +# This doesn't work with the shipment mailer.. diff --git a/app/views/admin/dhls/_address_label.html.erb b/app/views/spree/admin/dhls/_address_label.html.erb similarity index 100% rename from app/views/admin/dhls/_address_label.html.erb rename to app/views/spree/admin/dhls/_address_label.html.erb diff --git a/app/views/admin/dhls/_method_details_form.html.erb b/app/views/spree/admin/dhls/_method_details_form.html.erb similarity index 100% rename from app/views/admin/dhls/_method_details_form.html.erb rename to app/views/spree/admin/dhls/_method_details_form.html.erb diff --git a/app/views/admin/dhls/index.html.erb b/app/views/spree/admin/dhls/index.html.erb similarity index 100% rename from app/views/admin/dhls/index.html.erb rename to app/views/spree/admin/dhls/index.html.erb diff --git a/app/views/admin/shipments/dhllabel.text.erb b/app/views/spree/admin/shipments/dhllabel.text.erb similarity index 100% rename from app/views/admin/shipments/dhllabel.text.erb rename to app/views/spree/admin/shipments/dhllabel.text.erb diff --git a/app/views/shipment_mailer/dhls/_tracking_description.text.erb b/app/views/spree/shipment_mailer/dhls/_tracking_description.text.erb similarity index 100% rename from app/views/shipment_mailer/dhls/_tracking_description.text.erb rename to app/views/spree/shipment_mailer/dhls/_tracking_description.text.erb diff --git a/app/views/spree/shipment_mailer/shipped_email.text.erb b/app/views/spree/shipment_mailer/shipped_email.text.erb new file mode 100644 index 0000000..eabc2bc --- /dev/null +++ b/app/views/spree/shipment_mailer/shipped_email.text.erb @@ -0,0 +1,18 @@ +<%= t('shipment_mailer.shipped_email.dear_customer') %> + +<%= t('shipment_mailer.shipped_email.instructions') %> + +============================================================ +<%= t('shipment_mailer.shipped_email.shipment_summary') %> +============================================================ +<% @shipment.manifest.each do |item| %> + <%= item.variant.sku %> <%= item.variant.product.name %> <%= item.variant.options_text %> +<% end %> +============================================================ + +<%= t('shipment_mailer.shipped_email.track_information', :tracking => @shipment.tracking) if @shipment.tracking %> + +<%= render :partial => 'spree/shipment_mailer/dhls/tracking_description' %> + +<%= t('shipment_mailer.shipped_email.thanks') %> + diff --git a/config/routes.rb b/config/routes.rb index 0e02d23..d3cc4cd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,4 @@ -Rails.application.routes.draw do +Spree::Core::Engine.routes.draw do # Add your extension routes here namespace :admin do resources :dhls do diff --git a/lib/generators/sysmocom_dhl/install/install_generator.rb b/lib/generators/sysmocom_dhl/install/install_generator.rb new file mode 100644 index 0000000..536a9fd --- /dev/null +++ b/lib/generators/sysmocom_dhl/install/install_generator.rb @@ -0,0 +1,29 @@ +module SysmocomDhl + module Generators + class InstallGenerator < Rails::Generators::Base + + def add_javascripts + append_file 'app/assets/javascripts/store/all.js', "//= require store/sysmocom_dhl\n" + append_file 'app/assets/javascripts/admin/all.js', "//= require admin/sysmocom_dhl\n" + end + + def add_stylesheets + inject_into_file 'app/assets/stylesheets/store/all.css', " *= require store/sysmocom_dhl\n", :before => /\*\//, :verbose => true + inject_into_file 'app/assets/stylesheets/admin/all.css', " *= require admin/sysmocom_dhl\n", :before => /\*\//, :verbose => true + end + + def add_migrations + run 'bundle exec rake railties:install:migrations FROM=sysmocom_dhl' + end + + def run_migrations + res = ask 'Would you like to run the migrations now? [Y/n]' + if res == '' || res.downcase == 'y' + run 'bundle exec rake db:migrate' + else + puts 'Skipping rake db:migrate, don\'t forget to run it!' + end + end + end + end +end diff --git a/lib/sysmocom_dhl.rb b/lib/sysmocom_dhl.rb index 9483307..dea822c 100644 --- a/lib/sysmocom_dhl.rb +++ b/lib/sysmocom_dhl.rb @@ -1,17 +1,3 @@ require 'spree_core' -require 'sysmocom_dhl_hooks' - -module SysmocomDhl - class Engine < Rails::Engine - - config.autoload_paths += %W(#{config.root}/lib) - - def self.activate - 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 +require 'sysmocom_dhl/engine' +require 'iconv' diff --git a/lib/sysmocom_dhl/engine.rb b/lib/sysmocom_dhl/engine.rb new file mode 100644 index 0000000..928572d --- /dev/null +++ b/lib/sysmocom_dhl/engine.rb @@ -0,0 +1,22 @@ +module SpreeTest + class Engine < Rails::Engine + require 'spree/core' + isolate_namespace Spree + engine_name 'sysmocom_dhl' + + config.autoload_paths += %W(#{config.root}/lib) + + # use rspec for tests + config.generators do |g| + g.test_framework :rspec + end + + def self.activate + Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c| + Rails.configuration.cache_classes ? require(c) : load(c) + end + end + + config.to_prepare &method(:activate).to_proc + end +end diff --git a/lib/sysmocom_dhl_hooks.rb b/lib/sysmocom_dhl_hooks.rb deleted file mode 100644 index cb4429a..0000000 --- a/lib/sysmocom_dhl_hooks.rb +++ /dev/null @@ -1,13 +0,0 @@ -class SysmocomDhlHooks < Spree::ThemeSupport::HookListener - # custom hooks go here - insert_after :admin_tabs do - "<%= tab(:dhls) %>" - end - - # Add the DHL label download - insert_after :admin_shipment_edit_buttons, 'admin/dhls/address_label' - - # Add shipment identification.. - insert_after :shipment_mailer_shipped_email_tracking, 'shipment_mailer/dhls/tracking_description' - insert_after :admin_shipping_method_form_fields, 'admin/dhls/method_details_form' -end diff --git a/lib/tasks/install.rake b/lib/tasks/install.rake deleted file mode 100644 index b2d2e10..0000000 --- a/lib/tasks/install.rake +++ /dev/null @@ -1,25 +0,0 @@ -namespace :sysmocom_dhl do - desc "Copies all migrations and assets (NOTE: This will be obsolete with Rails 3.1)" - task :install do - Rake::Task['sysmocom_dhl:install:migrations'].invoke - Rake::Task['sysmocom_dhl:install:assets'].invoke - end - - namespace :install do - desc "Copies all migrations (NOTE: This will be obsolete with Rails 3.1)" - task :migrations do - source = File.join(File.dirname(__FILE__), '..', '..', 'db') - destination = File.join(Rails.root, 'db') - Spree::FileUtilz.mirror_files(source, destination) - end - - desc "Copies all assets (NOTE: This will be obsolete with Rails 3.1)" - task :assets do - source = File.join(File.dirname(__FILE__), '..', '..', 'public') - destination = File.join(Rails.root, 'public') - puts "INFO: Mirroring assets from #{source} to #{destination}" - Spree::FileUtilz.mirror_files(source, destination) - end - end - -end \ No newline at end of file diff --git a/lib/tasks/sysmocom_dhl.rake b/lib/tasks/sysmocom_dhl.rake deleted file mode 100644 index 2c5c4e2..0000000 --- a/lib/tasks/sysmocom_dhl.rake +++ /dev/null @@ -1 +0,0 @@ -# add custom rake tasks here \ No newline at end of file diff --git a/sysmocom_dhl.gemspec b/sysmocom_dhl.gemspec index d64d35b..f631bc9 100644 --- a/sysmocom_dhl.gemspec +++ b/sysmocom_dhl.gemspec @@ -1,10 +1,10 @@ Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = 'sysmocom_dhl' - s.version = '0.60.1' + s.version = '1.2.0' s.summary = 'sysmocom_dhl shipping helper' s.description = 'Deal with shipping cost, zones, insurance' - s.required_ruby_version = '>= 1.8.7' + s.required_ruby_version = '>= 1.9.1' # s.author = 'David Heinemeier Hansson' # s.email = 'david@loudthinking.com' @@ -16,5 +16,5 @@ Gem::Specification.new do |s| s.require_path = 'lib' s.requirements << 'none' - s.add_dependency('spree_core', '>= 0.60.1') + s.add_dependency('spree_core', '>= 1.2.0') end