<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,7 @@
 Flexi Rate Shipping
 ===================
+**Now Supports Spree: 0.7.1**
+
 Flexi Rate Shipping is an extension to Spree (a complete open source commerce solution for Ruby on Rails) that uses predefined values to calculate shipping. This extension is designed to be used when a traditional UPS / FedEx API approach in unavailable or unsuitable. 
 
 When installed, a new &quot;Flexi Shipping Rates&quot; link is added to the Configuration area in the Spree administration interface. Here you can define as many different rates as required, and link them to the relevant Shipping Categories and Zones.  </diff>
      <filename>README.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,8 @@
-class Admin::FlexiShippingRatesController &lt; ApplicationController
+class Admin::FlexiShippingRatesController &lt; Admin::BaseController    
     resource_controller
     before_filter :load_data
     layout 'admin'
 
-    require_role :admin
-
     update.response do |wants|
       wants.html { redirect_to collection_url }
     end
@@ -14,8 +12,12 @@ class Admin::FlexiShippingRatesController &lt; ApplicationController
     end
     
     private 
-    def load_data     
-      @available_categories = ShippingCategory.find :all, :order =&gt; :name
-      @available_zones = Zone.find :all, :order =&gt; :name
-    end
+			def collection 
+	      @collection ||= end_of_association_chain.order_by_zone_and_category 
+	    end
+	
+	    def load_data     
+	      @available_categories = ShippingCategory.find :all, :order =&gt; :name
+	      @available_zones = Zone.find :all, :order =&gt; :name
+	    end
 end</diff>
      <filename>app/controllers/admin/flexi_shipping_rates_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,5 +5,7 @@ class FlexiShippingRate &lt; ActiveRecord::Base
   
   validates_presence_of :first_item_price, :max_items, :shipping_category, :zone
   validates_uniqueness_of :shipping_category_id, :scope =&gt; :zone_id 
+
+  named_scope :order_by_zone_and_category, :order =&gt; &quot;zone_id, shipping_category_id&quot;
   
 end</diff>
      <filename>app/models/flexi_shipping_rate.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-&lt;h1&gt;&lt;%= &quot;#{t(&quot;edit&quot;)} #{FlexiShippingRate.human_name}&quot; %&gt;&lt;/h1&gt;
+&lt;h1&gt;&lt;%= &quot;#{t(&quot;editing&quot;)} #{FlexiShippingRate.human_name}&quot; %&gt;&lt;/h1&gt;
 &lt;%= error_messages_for :flexi_shipping_rate %&gt;
 &lt;% form_for(:flexi_shipping_rate, :url =&gt; object_url, :html =&gt; { :method =&gt; :put }) do |f| %&gt;
   &lt;%= render :partial =&gt; &quot;form&quot;, :locals =&gt; { :f =&gt; f } %&gt;</diff>
      <filename>app/views/admin/flexi_shipping_rates/edit.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,15 @@
+&lt;div class='toolbar'&gt;
+  &lt;ul class='actions'&gt;
+    &lt;li&gt;
+      &lt;%= button_link_to t(&quot;new_flexi_shipping_rate&quot;), new_object_url, :icon =&gt; 'add'  %&gt;
+    &lt;/li&gt;
+  &lt;/ul&gt;
+  &lt;br class='clear' /&gt;
+&lt;/div&gt;
+
 &lt;h1&gt;&lt;%= FlexiShippingRate.human_name(:count =&gt; 2) %&gt;&lt;/h1&gt;
-&lt;table class=&quot;admin-report&quot; width=&quot;545&quot;&gt;
+
+&lt;table class=&quot;index&quot;&gt;
   &lt;thead&gt;
     &lt;tr&gt;
 	    &lt;th&gt;&lt;%= FlexiShippingRate.human_attribute_name(&quot;shipping_category&quot;) %&gt;&lt;/th&gt;
@@ -12,15 +22,15 @@
   &lt;/thead&gt;
   &lt;tbody&gt;
     &lt;% @flexi_shipping_rates.each do |flexi_shipping_rate| %&gt;
-      &lt;tr class=&quot;&lt;%= cycle('even', 'odd') %&gt;&quot;&gt;
+      &lt;tr&gt;
         &lt;td&gt;&lt;%=flexi_shipping_rate.shipping_category.name %&gt;&lt;/td&gt;
         &lt;td&gt;&lt;%=flexi_shipping_rate.zone.name %&gt;&lt;/td&gt;
         &lt;td&gt;&lt;%=number_to_currency(flexi_shipping_rate.first_item_price) %&gt;&lt;/td&gt;
         &lt;td&gt;&lt;%=number_to_currency(flexi_shipping_rate.additional_item_price) %&gt;&lt;/td&gt;
         &lt;td&gt;&lt;%=flexi_shipping_rate.max_items %&gt;&lt;/td&gt;
         &lt;td&gt;
-          &lt;%=link_to t(&quot;edit&quot;), edit_object_url(flexi_shipping_rate) %&gt; |
-          &lt;%=link_to t(&quot;delete&quot;), object_url(flexi_shipping_rate), :method =&gt; :delete %&gt;
+          &lt;%= link_to_edit flexi_shipping_rate %&gt; &amp;nbsp;
+          &lt;%= link_to_delete flexi_shipping_rate %&gt;
         &lt;/td&gt;
       &lt;/tr&gt;
     &lt;% end %&gt;
@@ -28,5 +38,4 @@
       &lt;tr&gt;&lt;td colspan=&quot;5&quot;&gt;None.&lt;/td&gt;&lt;/tr&gt;
     &lt;% end %&gt;
   &lt;/tbody&gt;
-&lt;/table&gt;
-&lt;%= link_to &quot;#{t(&quot;actions.new&quot;)} #{FlexiShippingRate.human_name}&quot;, new_object_url %&gt;
\ No newline at end of file
+&lt;/table&gt;
\ No newline at end of file</diff>
      <filename>app/views/admin/flexi_shipping_rates/index.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -14,3 +14,5 @@ en-GB:
         flexi_shipping_rate:
           taken: &quot;already exists for the specified Zone.&quot;
   flexi_shipping_rates_description: Manage rates and associated Shipping Categories for use with the FlexiRate Shipping Extension
+  new_flexi_shipping_rate: &quot;New Flexi Shipping Rate&quot;
+  editing: &quot;Editing&quot;
\ No newline at end of file</diff>
      <filename>config/locales/en-GB.yml</filename>
    </modified>
    <modified>
      <diff>@@ -14,3 +14,5 @@ en-US:
         flexi_shipping_rate:
           taken: &quot;already exists for the specified Zone.&quot;
   flexi_shipping_rates_description: Manage rates and associated Shipping Categories for use with the FlexiRate Shipping Extension
+  new_flexi_shipping_rate: &quot;New Flexi Shipping Rate&quot;
+  editing: &quot;Editing&quot;
\ No newline at end of file</diff>
      <filename>config/locales/en-US.yml</filename>
    </modified>
    <modified>
      <diff>@@ -2,9 +2,9 @@
 # require_dependency 'application'
 
 class FlexiRateShippingExtension &lt; Spree::Extension
-  version &quot;1.0&quot;
-  description &quot;Describe your extension here&quot;
-  url &quot;http://yourwebsite.com/flexi_rate_shipping&quot;
+  version &quot;0.7.1&quot;
+  description &quot;Calculates shipping using predefined rates.&quot;
+  url &quot;http://github.com/BDQ/spree-flexi-rate-shipping/tree/master&quot;
  
   define_routes do |map|
     map.namespace :admin do |admin|</diff>
      <filename>flexi_rate_shipping_extension.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,17 +1,17 @@
 module Spree
   module FlexiRateShipping
     class Calculator
-      def calculate_shipping(order)
+      def calculate_shipping(shipment)
         rates = {}
         rate_count = {}
-        order.line_items.each do |li|
+        shipment.order.line_items.each do |li|
 
           li.quantity.times do 
             sc = li.variant.product.shipping_category
             sc ||= ShippingCategory.new()
             flexi_rates = sc.flexi_shipping_rates
             
-            fsr = flexi_rates.detect{ | rate | rate.zone.include?(order.address) }
+            fsr = flexi_rates.detect{ | rate | rate.zone.include?(shipment.address) }
             
             fsr ||= FlexiShippingRate.new(:id =&gt; 'default', :first_item_price =&gt; 0, :max_items =&gt; 1)
             rate_count.has_key?(fsr.id) ? rate_count[fsr.id] += 1 : rate_count[fsr.id] = 1</diff>
      <filename>lib/spree/flexi_rate_shipping/calculator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,27 +3,32 @@ require File.dirname(__FILE__) + '/../spec_helper'
 
 describe Spree::FlexiRateShipping::Calculator do
   before(:each) do
-    @flexi_shipping_rate1 = mock_model(FlexiShippingRate, :first_item_price =&gt; 10.0, :additional_item_price =&gt; 2.0, :max_items =&gt; 6)
-    @shipping_category1 = mock_model(ShippingCategory, :flexi_shipping_rate =&gt; @flexi_shipping_rate1)
+		@zone = mock_model(Zone, :name =&gt; &quot;North America&quot;, :include? =&gt; true)
+		
+    @flexi_shipping_rate1 = mock_model(FlexiShippingRate, :first_item_price =&gt; 10.0, :additional_item_price =&gt; 2.0, :max_items =&gt; 6, :zone =&gt; @zone)
+
+    @shipping_category1 = mock_model(ShippingCategory, :flexi_shipping_rates =&gt; [@flexi_shipping_rate1])
     @product1 = mock_model(Product, :shipping_category =&gt; @shipping_category1)
     @variant1 = mock_model(Variant, :product =&gt; @product1)
 
+		@address = mock_model(Address, :zone =&gt; @zone)
   end
 
   it &quot;should calculate shipping with no flexi shipping rate&quot; do
-    @shipping_category1 = mock_model(ShippingCategory, :flexi_shipping_rate =&gt; nil)
+    @shipping_category1 = mock_model(ShippingCategory, :flexi_shipping_rates =&gt; [])
     @product1 = mock_model(Product, :shipping_category =&gt; @shipping_category1)
     @variant1 = mock_model(Variant, :product =&gt; @product1)
     
     @line_item1 = mock_model(LineItem, :variant =&gt; @variant1, :quantity =&gt; 1)
     @line_items = [@line_item1]
     @order = mock_model(Order, :line_items =&gt; @line_items)
+		@shipment = mock_model(Shipment, :order =&gt; @order, :address =&gt; @address)
     
-    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@order).should == 0.0
+    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@shipment).should == 0.0
   end
   
   it &quot;should calculate shipping with one product with no flexi shipping rate&quot; do
-    @no_rate_shipping_category = mock_model(ShippingCategory, :flexi_shipping_rate =&gt; nil)
+    @no_rate_shipping_category = mock_model(ShippingCategory, :flexi_shipping_rates =&gt; [])
     @product1 = mock_model(Product, :shipping_category =&gt; @no_rate_shipping_category)
     @variant1 = mock_model(Variant, :product =&gt; @product1)
     
@@ -35,8 +40,9 @@ describe Spree::FlexiRateShipping::Calculator do
     
     @line_items = [@line_item1, @line_item2]
     @order = mock_model(Order, :line_items =&gt; @line_items)
+		@shipment = mock_model(Shipment, :order =&gt; @order, :address =&gt; @address)
     
-    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@order).should == 12.0
+    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@shipment).should == 12.0
   end
 
   
@@ -52,8 +58,9 @@ describe Spree::FlexiRateShipping::Calculator do
     
     @line_items = [@line_item1, @line_item2]
     @order = mock_model(Order, :line_items =&gt; @line_items)
+		@shipment = mock_model(Shipment, :order =&gt; @order, :address =&gt; @address)
     
-    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@order).should == 12.0
+    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@shipment).should == 12.0
   end
   
   it &quot;should calculate shipping with no shipping category&quot; do
@@ -63,16 +70,18 @@ describe Spree::FlexiRateShipping::Calculator do
     @line_item1 = mock_model(LineItem, :variant =&gt; @variant1, :quantity =&gt; 7)
     @line_items = [@line_item1]
     @order = mock_model(Order, :line_items =&gt; @line_items)
+		@shipment = mock_model(Shipment, :order =&gt; @order, :address =&gt; @address)
     
-    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@order).should == 0.0
+    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@shipment).should == 0.0
   end
 
   it &quot;should calculate shipping correctly using one flexi shipping rate and one product&quot; do
     @line_item1 = mock_model(LineItem, :variant =&gt; @variant1, :quantity =&gt; 7)
     @line_items = [@line_item1]
     @order = mock_model(Order, :line_items =&gt; @line_items)
+		@shipment = mock_model(Shipment, :order =&gt; @order, :address =&gt; @address)
     
-    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@order).should == 30.0
+    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@shipment).should == 30.0
   end
   
   it &quot;should calculate shipping correctly using one flexi shipping rate and multiple products&quot; do
@@ -88,14 +97,15 @@ describe Spree::FlexiRateShipping::Calculator do
     
     @line_items = [@line_item1, @line_item2, @line_item3]
     @order = mock_model(Order, :line_items =&gt; @line_items)
+		@shipment = mock_model(Shipment, :order =&gt; @order, :address =&gt; @address)
     
-    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@order).should == 34.0
+    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@shipment).should == 34.0
   end
   
   it &quot;should calculate shipping correctly using two different flexi shipping rates&quot; do
    
-    @flexi_shipping_rate2 = mock_model(FlexiShippingRate, :first_item_price =&gt; 50, :additional_item_price =&gt; 10, :max_items =&gt; 10)
-    @shipping_category2 = mock_model(ShippingCategory, :flexi_shipping_rate =&gt; @flexi_shipping_rate2)
+    @flexi_shipping_rate2 = mock_model(FlexiShippingRate, :first_item_price =&gt; 50, :additional_item_price =&gt; 10, :max_items =&gt; 10, :zone =&gt; @zone)
+    @shipping_category2 = mock_model(ShippingCategory, :flexi_shipping_rates =&gt; [@flexi_shipping_rate2])
     @product2 = mock_model(Product, :shipping_category =&gt; @shipping_category2)
     @variant2 = mock_model(Variant, :product =&gt; @product2)
     
@@ -103,15 +113,16 @@ describe Spree::FlexiRateShipping::Calculator do
     @line_item2 = mock_model(LineItem, :variant =&gt; @variant2, :quantity =&gt; 3)
     @line_items = [@line_item1, @line_item2]
     @order = mock_model(Order, :line_items =&gt; @line_items)
+		@shipment = mock_model(Shipment, :order =&gt; @order, :address =&gt; @address)
     
-    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@order).should == 90.0
+    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@shipment).should == 90.0
   end
   
   
   it &quot;should calculate shipping correctly using two different flexi shipping rates, one with no addition_item_price&quot; do
    
-    @flexi_shipping_rate2 = mock_model(FlexiShippingRate, :first_item_price =&gt; 50, :additional_item_price =&gt; nil, :max_items =&gt; 1)
-    @shipping_category2 = mock_model(ShippingCategory, :flexi_shipping_rate =&gt; @flexi_shipping_rate2)
+    @flexi_shipping_rate2 = mock_model(FlexiShippingRate, :first_item_price =&gt; 50, :additional_item_price =&gt; nil, :max_items =&gt; 1, :zone =&gt; @zone)
+    @shipping_category2 = mock_model(ShippingCategory, :flexi_shipping_rates =&gt; [@flexi_shipping_rate2])
     @product2 = mock_model(Product, :shipping_category =&gt; @shipping_category2)
     @variant2 = mock_model(Variant, :product =&gt; @product2)
     
@@ -119,8 +130,9 @@ describe Spree::FlexiRateShipping::Calculator do
     @line_item2 = mock_model(LineItem, :variant =&gt; @variant2, :quantity =&gt; 1)
     @line_items = [@line_item1, @line_item2]
     @order = mock_model(Order, :line_items =&gt; @line_items)
+		@shipment = mock_model(Shipment, :order =&gt; @order, :address =&gt; @address)
     
-    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@order).should == 70.0
+    Spree::FlexiRateShipping::Calculator.new().calculate_shipping(@shipment).should == 70.0
   end
 
 </diff>
      <filename>spec/models/flexi_shipping_calculator_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,7 @@ describe FlexiShippingRate do
     @flexi_shipping_rate = FlexiShippingRate.new
   end
 
-  ['first item price', 'max items'].each do |field|
+  ['first item price', 'max. number of items'].each do |field|
     it &quot;should require #{field}&quot; do
       @flexi_shipping_rate.max_items = nil
       @flexi_shipping_rate.valid?.should be_false</diff>
      <filename>spec/models/flexi_shipping_rate_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>112c70a9d7f285b3b0cc6a08f447c61b4decf4d3</id>
    </parent>
  </parents>
  <author>
    <name>Brian Quinn</name>
    <email>briandquinn@gmail.com</email>
  </author>
  <url>http://github.com/BDQ/spree-flexi-rate-shipping/commit/059636709243b7b3166016cec65e2094c90a35a8</url>
  <id>059636709243b7b3166016cec65e2094c90a35a8</id>
  <committed-date>2009-04-24T09:53:45-07:00</committed-date>
  <authored-date>2009-04-24T09:53:45-07:00</authored-date>
  <message>Updated to now support Spree 0.7.1 (shipments)</message>
  <tree>93767c39bf16f133bc999ff8f46e9c8c6e49fc50</tree>
  <committer>
    <name>Brian Quinn</name>
    <email>briandquinn@gmail.com</email>
  </committer>
</commit>
