[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 メーリングリストの案内