OSDN Git Service

プラグインの修正に伴なう修正
authorTaro Matsuzawa <tmatsuzawa@kbmj.com>
Mon, 25 Oct 2010 12:56:41 +0000 (21:56 +0900)
committerTaro Matsuzawa <tmatsuzawa@kbmj.com>
Mon, 25 Oct 2010 12:56:41 +0000 (21:56 +0900)
- カートコントローラでエラーチェックが正確にできるよう修正
- 受注データの管理から決済プラグインのデータ管理に遷移できるよう修正
- POSTメソッドしか受け付けないコントローラ用のWillPaginate用Rendererを追加

app/controllers/cart_controller.rb
app/models/payment.rb
app/views/admin/orders/_form.html.erb
app/views/admin/orders/search.html.erb
config/initializers/post_renderer.rb [new file with mode: 0644]
lib/payment_plugin_base.rb

index ec0d6ef..800a200 100644 (file)
@@ -448,7 +448,11 @@ class CartController < BaseController
     self.send payment_plugin.next_step(current_method_symbol)
   end
   def before_finish
-    restore_transaction_items_after_payment
+    unless restore_transaction_items_after_payment
+      flash.now[:error] = '失敗しました'
+      redirect_to :action => 'show'
+      return
+    end
     begin
       save_before_finish
     rescue => e
@@ -851,6 +855,7 @@ class CartController < BaseController
 
   def restore_transaction_items_after_payment
     transaction_items = session[:transaction_items]
+    return false if transaction_items.nil?
     @carts = transaction_items[:carts]
     @login_customer = transaction_items[:login_customer]
     @orders = transaction_items[:orders]
@@ -858,6 +863,7 @@ class CartController < BaseController
     @order_details = transaction_items[:order_details]
     @ids = transaction_items[:ids]
     @not_login_customer = transaction_items[:not_login_customer]
+    return true
   end
   
 end
index 7771a38..3f85d5b 100644 (file)
@@ -28,6 +28,25 @@ class Payment < ActiveRecord::Base
     payment_plugin.get_plugin_instance
   end
 
+  def order_has_datamanagement
+    obj = self.get_plugin_instance
+    if obj
+      return obj.order_has_datamanagement
+    else
+      return false
+    end
+  end
+
+  def get_datamanagement_by_order(order_code) 
+    obj = self.get_plugin_instance
+    if obj
+      return obj.get_datamanagement_by_order(order_code)
+    else
+      return nil
+    end
+  end
+   
+
   def common_delivery?
     return true if delivery_trader_id == COMMON_DELIVERY_TRADER_ID
     return false
index cc93c21..65363f0 100644 (file)
   <tr>
    <td colspan="6">
      <%=h @order_delivery.payment_name %>
+     <% if @order_delivery.payment.order_has_datamanagement %>
+       (<%= link_to "データ管理", url_for(@order_delivery.payment.get_datamanagement_by_order(@order_delivery.order_code)), {:method => :post} %>)
+     <% end %>
    </td>
   </tr>
   <tr>
index e1f81fc..d8a6730 100644 (file)
       <td><%= date(order_delivery.received_at) %></td>
       <td><%= order_delivery.order_code %></td>
       <td><%=h order_delivery.family_name %> <%=h order_delivery.first_name %></td>
-      <td><%= order_delivery.payment && order_delivery.payment.name %></td>
+      <td>
+       <% if order_delivery.payment %>
+         <% if order_delivery.payment.order_has_datamanagement %>
+           <%= link_to order_delivery.payment.name, url_for(order_delivery.payment.get_datamanagement_by_order(order_delivery.order_code)), {:method => :post} %>
+         <% else %>
+           <%= order_delivery.payment.name %>
+         <% end %>
+       <% end %>
+      </td>
       <td><%= number_with_delimiter(order_delivery.total) %></td>
       <td><%= date(order_delivery.shipped_at) || '未発送' %></td>
       <td><%= order_delivery.status_view %></td>
diff --git a/config/initializers/post_renderer.rb b/config/initializers/post_renderer.rb
new file mode 100644 (file)
index 0000000..824ecbc
--- /dev/null
@@ -0,0 +1,8 @@
+class PostRenderer < WillPaginate::LinkRenderer
+  
+  def page_link(page, text, attributes = {})
+    attributes.merge!({:method => :post})
+    @template.link_to text, url_for(page), attributes
+  end
+
+end
index 4633a64..e0f8bef 100644 (file)
@@ -69,4 +69,13 @@ module PaymentPluginBase
     return true, ""
   end
 
+  def order_has_datamanagement
+    return false
+  end
+
+  # paramsを返す
+  def get_datamanagement_by_order(order_code)
+    raise "実装してください"
+  end
+
 end