[Svn-src-all:2730] [version-2_12-dev 21629] #1439 (「お届け先の指定」に戻った際に、選択した状態を引き継いでいない)

Seasoft admin @ mail.ec-cube.net
2012年 3月 12日 (月) 15:35:03 JST


Subversion committed to /home/svn/open 21629
http://svn.ec-cube.net/open_trac/changeset/21629
┌────────────────────────────┐
│更新者 :  Seasoft                                      │
│更新日時:  2012-03-12 15:35:03 +0900 (月, 12  3月 2012)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#1439 (「お届け先の指定」に戻った際に、選択した状態を引き継いでいない)
  * 実装誤りの修正
#1672 (非会員購入時「お届け先の複数指定」から戻るボタンで遷移すると追加したお届け先が削除される)
  * 実装誤りの修正
#1675 (「お届け先の複数指定」画面での入力内容が復元されない)
#1315 (複数のお届け先関連のキー情報が怪しい)
  * 根本的な解決ではありませんが、とりあえず会員に関しては other_deliv_id を使うようにした。
#1613 (typo修正・ソース整形・ソースコメントの改善)

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_12-dev/data/Smarty/templates/default/shopping/payment.tpl
U   branches/version-2_12-dev/data/Smarty/templates/mobile/shopping/payment.tpl
U   branches/version-2_12-dev/data/Smarty/templates/sphone/shopping/payment.tpl
U   branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping.php
U   branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php
U   branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php

変更: branches/version-2_12-dev/data/Smarty/templates/default/shopping/payment.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/default/shopping/payment.tpl	2012-03-12 06:20:26 UTC (rev 21628)
+++ branches/version-2_12-dev/data/Smarty/templates/default/shopping/payment.tpl	2012-03-12 06:35:03 UTC (rev 21629)
@@ -277,7 +277,7 @@
         <div class="btn_area">
             <ul>
                 <li>
-                <a href="<!--{$tpl_back_url|h}-->" onmouseover="chgImg('<!--{$TPL_URLPATH}-->img/button/btn_back_on.jpg','back03')" onmouseout="chgImg('<!--{$TPL_URLPATH}-->img/button/btn_back.jpg','back03')">
+                <a href="?mode=return" onmouseover="chgImg('<!--{$TPL_URLPATH}-->img/button/btn_back_on.jpg','back03')" onmouseout="chgImg('<!--{$TPL_URLPATH}-->img/button/btn_back.jpg','back03')">
                     <img src="<!--{$TPL_URLPATH}-->img/button/btn_back.jpg" alt="戻る" border="0" name="back03" id="back03" /></a>
                 </li>
                 <li>

変更: branches/version-2_12-dev/data/Smarty/templates/mobile/shopping/payment.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/mobile/shopping/payment.tpl	2012-03-12 06:20:26 UTC (rev 21628)
+++ branches/version-2_12-dev/data/Smarty/templates/mobile/shopping/payment.tpl	2012-03-12 06:35:03 UTC (rev 21629)
@@ -108,17 +108,8 @@
         <center><input type="submit" value="次へ"></center>
     </form>
 
-    <!--{if $is_single_deliv}-->
-        <form action="<!--{$tpl_back_url|h}-->" method="get">
-            <!--{if $is_multiple}-->
-                <input type="hidden" name="from" value="multiple">
-            <!--{/if}-->
-    <!--{else}-->
-        <form action="<!--{$smarty.const.MOBILE_SHOPPING_PAYMENT_URLPATH}-->" method="post">
-            <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->">
-            <input type="hidden" name="mode" value="">
-            <input type="hidden" name="uniqid" value="<!--{$tpl_uniqid}-->">
-    <!--{/if}-->
-        <center><input type="submit" name="return" value="戻る"></center>
+    <form action="?mode=return" method="get">
+        <input type="hidden" name="mode" value="return">
+        <center><input type="submit" value="戻る"></center>
     </form>
 <!--{/strip}-->

変更: branches/version-2_12-dev/data/Smarty/templates/sphone/shopping/payment.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/sphone/shopping/payment.tpl	2012-03-12 06:20:26 UTC (rev 21628)
+++ branches/version-2_12-dev/data/Smarty/templates/sphone/shopping/payment.tpl	2012-03-12 06:35:03 UTC (rev 21629)
@@ -270,7 +270,7 @@
         <div class="btn_area">
             <ul class="btn_btm">
                 <li><a rel="external" href="javascript:void(document.form1.submit());" class="btn">確認ページへ</a></li>
-                <li><a rel="external" href="<!--{$tpl_back_url|h}-->" class="btn_back">戻る</a></li>
+                <li><a rel="external" href="?mode=return" class="btn_back">戻る</a></li>
             </ul>
         </div>
 

変更: branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping.php	2012-03-12 06:20:26 UTC (rev 21628)
+++ branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping.php	2012-03-12 06:35:03 UTC (rev 21629)
@@ -412,9 +412,9 @@
                 $objPurchase->saveShippingTemp($arrShipping, 1);
             }
         } else {
-            $objPurchase->unsetOneShippingTemp();
+            $objPurchase->unsetAllShippingTemp(true);
             if ($arrParams['deliv_check'] == '1') {
-                $objPurchase->saveShippingTemp($arrShipping, 0);
+                $objPurchase->saveShippingTemp($arrShipping, 1);
             } else {
                 $objPurchase->saveShippingTemp($arrShippingOwn, 0);
             }

変更: branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php	2012-03-12 06:20:26 UTC (rev 21628)
+++ branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php	2012-03-12 06:35:03 UTC (rev 21629)
@@ -121,12 +121,13 @@
             case 'customer_addr':
                 $objPurchase->unsetShippingTemp();
 
-                $success = $this->registerDeliv($arrForm['deliv_check'], $this->tpl_uniqid, $objPurchase, $objCustomer);
+                $shipping_id = $arrForm['deliv_check'] == -1 ? 0 : $arrForm['deliv_check'];
+                $success = $this->registerDeliv($shipping_id, $this->tpl_uniqid, $objPurchase, $objCustomer);
                 if (!$success) {
                     SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
                 }
 
-                $objPurchase->setShipmentItemTempForSole($objCartSess);
+                $objPurchase->setShipmentItemTempForSole($objCartSess, $shipping_id);
                 $objSiteSess->setRegistFlag();
                 SC_Response_Ex::sendRedirect(SHOPPING_PAYMENT_URLPATH);
                 exit;
@@ -157,7 +158,14 @@
                 SC_Response_Ex::sendRedirect('multiple.php');
                 exit;
                 break;
+
             default:
+                // 配送IDの取得
+                $shippingData = $objPurchase->getShippingTemp();
+                $arrShippingId = array_keys($shippingData);
+                if (isset($arrShippingId[0])) {
+                    $this->arrForm['deliv_check']['value'] = $arrShippingId[0] == 0 ? -1 : $arrShippingId[0];
+                }
                 break;
         }
 
@@ -209,40 +217,33 @@
      * その他のお届け先がチェックされている場合は, その他のお届け先からお届け先を取得する.
      * お届け先チェックの値が不正な場合は false を返す.
      *
-     * @param integer $deliv_check お届け先チェック
+     * @param integer $other_deliv_id 
      * @param string $uniqid 受注一時テーブルのユニークID
      * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス
      * @param SC_Customer $objCustomer SC_Customer インスタンス
      * @return boolean お届け先チェックの値が妥当な場合 true
      */
-    function registerDeliv($deliv_check, $uniqid, &$objPurchase, &$objCustomer) {
+    function registerDeliv($other_deliv_id, $uniqid, &$objPurchase, &$objCustomer) {
         GC_Utils_Ex::gfDebugLog('register deliv. deliv_check=' . $deliv_check);
         $arrValues = array();
         // 会員登録住所がチェックされている場合
-        if ($deliv_check == '-1') {
+        if ($other_deliv_id == 0) {
             $objPurchase->copyFromCustomer($arrValues, $objCustomer, 'shipping');
-            $objPurchase->saveShippingTemp($arrValues);
-            $objPurchase->saveOrderTemp($uniqid, $arrValues, $objCustomer);
-            return true;
         }
         // 別のお届け先がチェックされている場合
-        elseif ($deliv_check >= 1) {
+        else {
             $objQuery =& SC_Query_Ex::getSingletonInstance();
             $arrOtherDeliv = $objQuery->getRow('*', 'dtb_other_deliv',
                                                'customer_id = ? AND other_deliv_id = ?',
-                                               array($objCustomer->getValue('customer_id'), $deliv_check));
-            if (SC_Utils_Ex::isBlank($arrOtherDeliv)) {
+                                               array($objCustomer->getValue('customer_id'), $other_deliv_id));
+            if (empty($arrOtherDeliv)) {
                 return false;
             }
 
             $objPurchase->copyFromOrder($arrValues, $arrOtherDeliv, 'shipping', '');
-            $objPurchase->saveShippingTemp($arrValues);
-            $objPurchase->saveOrderTemp($uniqid, $arrValues, $objCustomer);
-            return true;
         }
-        // お届け先チェックが不正な場合
-        else {
-            return false;
-        }
+        $objPurchase->saveShippingTemp($arrValues, $other_deliv_id);
+        $objPurchase->saveOrderTemp($uniqid, $arrValues, $objCustomer);
+        return true;
     }
 }

変更: branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php	2012-03-12 06:20:26 UTC (rev 21628)
+++ branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php	2012-03-12 06:35:03 UTC (rev 21629)
@@ -107,7 +107,8 @@
         }
 
         // 戻り URL の設定
-        $this->tpl_back_url = $this->getPreviousURL($objCustomer->isLoginSuccess(true), $cart_key, $this->is_multiple);
+        // @deprecated 2.12.0 テンプレート直書きに戻した
+        $this->tpl_back_url = '?mode=return';
 
         $arrOrderTemp = $objPurchase->getOrderTemp($this->tpl_uniqid);
         // 正常に受注情報が格納されていない場合はカート画面へ戻す
@@ -206,7 +207,20 @@
                 $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg);
                 $objPlugin->doAction('lc_page_shopping_payment_action_return', array($this));
 
-                SC_Response_Ex::sendRedirect(SHOPPING_URL);
+                $url = null;
+                if ($this->is_multiple) {
+                    $url = MULTIPLE_URLPATH . '?from=multiple';
+                } elseif ($objCustomer->isLoginSuccess(true)) {
+                    if ($product_type_id == PRODUCT_TYPE_DOWNLOAD) {
+                        $url = CART_URLPATH;
+                    } else {
+                        $url = DELIV_URLPATH;
+                    }
+                } else {
+                    $url = SHOPPING_URL . '?from=nonmember';
+                }
+
+                SC_Response_Ex::sendRedirect($url);
                 exit;
                 break;
 
@@ -440,29 +454,6 @@
     }
 
     /**
-     * 前に戻るボタンの URL を取得する.
-     *
-     * @param boolean $is_login ユーザーがログインしている場合 true
-     * @param integer $product_type_id 商品種別ID
-     * @param boolean $is_multiple 複数配送の場合 true
-     * @return string 前に戻るボタンの URL
-     */
-    function getPreviousURL($is_login = false, $product_type_id, $is_multiple) {
-        if ($is_multiple) {
-            return MULTIPLE_URLPATH . '?from=multiple';
-        }
-        if ($is_login) {
-            if ($product_type_id == PRODUCT_TYPE_DOWNLOAD) {
-                return CART_URLPATH;
-            } else {
-                return DELIV_URLPATH;
-            }
-        } else {
-            return SHOPPING_URL . '?from=nonmember';
-        }
-    }
-
-    /**
      * モバイル用テンプレートのパスを取得する.
      *
      * @param boolean $is_single_deliv 配送業者が1社の場合 true




Svn-src-all メーリングリストの案内