[Svn-src-all:2780] [version-2_12-dev 21679] #1514 モバイル> 郵便番号による住所入力機能 の対応

pingpong admin @ mail.ec-cube.net
2012年 3月 26日 (月) 19:11:14 JST


Subversion committed to /home/svn/open 21679
http://svn.ec-cube.net/open_trac/changeset/21679
┌────────────────────────────┐
│更新者 :  pingpong                                     │
│更新日時:  2012-03-26 19:11:14 +0900 (月, 26  3月 2012)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#1514 モバイル> 郵便番号による住所入力機能 の対応


Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_12-dev/data/Smarty/templates/admin/products/category.tpl
U   branches/version-2_12-dev/data/Smarty/templates/mobile/entry/index.tpl
U   branches/version-2_12-dev/data/Smarty/templates/mobile/mypage/change.tpl
U   branches/version-2_12-dev/data/class/pages/entry/LC_Page_Entry.php
U   branches/version-2_12-dev/data/class/pages/mypage/LC_Page_Mypage_Change.php

変更: branches/version-2_12-dev/data/Smarty/templates/admin/products/category.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/admin/products/category.tpl	2012-03-26 09:28:02 UTC (rev 21678)
+++ branches/version-2_12-dev/data/Smarty/templates/admin/products/category.tpl	2012-03-26 10:11:14 UTC (rev 21679)
@@ -55,7 +55,7 @@
             <!--{/if}-->
 
             <!--{* スペース繰り返し *}-->
-            <!--{section name=n loop=$level}-->  <!--{/section}-->
+            <!--{section name=n loop=$level}-->  1<!--{/section}-->
 
             <!--{* カテゴリ名表示 *}-->
             <!--{assign var=disp_name value="`$arrTree[cnt].category_id`.`$arrTree[cnt].category_name`"}-->

変更: branches/version-2_12-dev/data/Smarty/templates/mobile/entry/index.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/mobile/entry/index.tpl	2012-03-26 09:28:02 UTC (rev 21678)
+++ branches/version-2_12-dev/data/Smarty/templates/mobile/entry/index.tpl	2012-03-26 10:11:14 UTC (rev 21679)
@@ -75,6 +75,8 @@
     	<input size="<!--{$size1}-->" type="text" name="zip01" value="<!--{if $arrForm.zip01 == ""}--><!--{$arrOtherDeliv.zip01|h}--><!--{else}--><!--{$arrForm.zip01|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" istyle="4">
     	&nbsp;-&nbsp;
     	<input size="<!--{$size2}-->" type="text" name="zip02" value="<!--{if $arrForm.zip02 == ""}--><!--{$arrOtherDeliv.zip02|h}--><!--{else}--><!--{$arrForm.zip02|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" istyle="4"><br>
+    	<input type="submit" name="submit_address" value="自動住所入力"><br>
+	郵便番号を入力後、クリックしてください。<br>
 
     	●都道府県<font color="#FF0000"> *</font><br>
     	<font color="#FF0000"><!--{$arrErr.pref}--></font>

変更: branches/version-2_12-dev/data/Smarty/templates/mobile/mypage/change.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/mobile/mypage/change.tpl	2012-03-26 09:28:02 UTC (rev 21678)
+++ branches/version-2_12-dev/data/Smarty/templates/mobile/mypage/change.tpl	2012-03-26 10:11:14 UTC (rev 21679)
@@ -74,6 +74,8 @@
     	<input size="<!--{$size1}-->" type="text" name="zip01" value="<!--{if $arrForm.zip01 == ""}--><!--{$arrOtherDeliv.zip01|h}--><!--{else}--><!--{$arrForm.zip01|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" istyle="4">
     	&nbsp;-&nbsp;
     	<input size="<!--{$size2}-->" type="text" name="zip02" value="<!--{if $arrForm.zip02 == ""}--><!--{$arrOtherDeliv.zip02|h}--><!--{else}--><!--{$arrForm.zip02|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" istyle="4"><br>
+    	<input type="submit" name="submit_address" value="自動住所入力"><br>
+	郵便番号を入力後、クリックしてください。<br>
 
     	【都道府県】<font color="#FF0000">※</font><br>
     	<font color="#FF0000"><!--{$arrErr.pref}--></font>

変更: branches/version-2_12-dev/data/class/pages/entry/LC_Page_Entry.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/entry/LC_Page_Entry.php	2012-03-26 09:28:02 UTC (rev 21678)
+++ branches/version-2_12-dev/data/class/pages/entry/LC_Page_Entry.php	2012-03-26 10:11:14 UTC (rev 21679)
@@ -96,6 +96,32 @@
 
         switch ($this->getMode()) {
             case 'confirm':
+                if(isset($_POST['submit_address'])){
+                    // 入力エラーチェック
+                    $this->arrErr = $this->fnErrorCheck($_POST);
+                    // 入力エラーの場合は終了
+                    if (count($this->arrErr) == 0) {
+                        // 郵便番号検索文作成
+                        $zipcode = $_POST['zip01'] . $_POST['zip02'];
+
+                        // 郵便番号検索
+                        $arrAdsList = SC_Utils_Ex::sfGetAddress($zipcode);
+    
+                        // 郵便番号が発見された場合
+                        if (!empty($arrAdsList)) {
+                            $data['pref'] = $arrAdsList[0]['state'];
+                            $data['addr01'] = $arrAdsList[0]['city']. $arrAdsList[0]['town'];
+			    $objFormParam->setParam($data);
+
+                            // 該当無し
+                        } else {
+                            $this->arrErr['zip01'] = '※該当する住所が見つかりませんでした。<br>';
+                        }
+                    }
+		    $this->arrForm  = $objFormParam->getHashArray();
+		    break;
+		}
+
                 //-- 確認
                 $this->arrErr = SC_Helper_Customer_Ex::sfCustomerEntryErrorCheck($objFormParam);
                 $this->arrForm  = $objFormParam->getHashArray();
@@ -275,4 +301,48 @@
             }
         return true;
     }
+
+    /**
+     * 入力エラーのチェック.
+     *
+     * @param array $arrRequest リクエスト値($_GET)
+     * @return array $arrErr エラーメッセージ配列
+     */
+    function fnErrorCheck($arrRequest) {
+        // パラメーター管理クラス
+        $objFormParam = new SC_FormParam_Ex();
+        // パラメーター情報の初期化
+        $objFormParam->addParam('郵便番号1', 'zip01', ZIP01_LEN, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
+        $objFormParam->addParam('郵便番号2', 'zip02', ZIP02_LEN, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
+        // // リクエスト値をセット
+	$arrData['zip01'] = $arrRequest['zip01'];
+	$arrData['zip02'] = $arrRequest['zip02'];
+        $objFormParam->setParam($arrData);
+        // エラーチェック
+        $arrErr = $objFormParam->checkError();
+        // 親ウィンドウの戻り値を格納するinputタグのnameのエラーチェック
+        if (!$this->lfInputNameCheck($addData['zip01'])) {
+            $arrErr['zip01'] = '※ 入力形式が不正です。<br />';
+        }
+        if (!$this->lfInputNameCheck($arrdata['zip02'])) {
+            $arrErr['zip02'] = '※ 入力形式が不正です。<br />';
+        }
+
+        return $arrErr;
+    }
+
+    /**
+     * エラーチェック.
+     *
+     * @param string $value
+     * @return エラーなし:true エラー:false
+     */
+    function lfInputNameCheck($value) {
+        // 半角英数字と_(アンダーバー), []以外の文字を使用していたらエラー
+        if (strlen($value) > 0 && !preg_match("/^[a-zA-Z0-9_\[\]]+$/", $value)) {
+            return false;
+        }
+
+        return true;
+    }
 }

変更: branches/version-2_12-dev/data/class/pages/mypage/LC_Page_Mypage_Change.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/mypage/LC_Page_Mypage_Change.php	2012-03-26 09:28:02 UTC (rev 21678)
+++ branches/version-2_12-dev/data/class/pages/mypage/LC_Page_Mypage_Change.php	2012-03-26 10:11:14 UTC (rev 21679)
@@ -95,6 +95,31 @@
         switch ($this->getMode()) {
             // 確認
             case 'confirm':
+                if(isset($_POST['submit_address'])){
+                    // 入力エラーチェック
+                    $this->arrErr = $this->fnErrorCheck($_POST);
+                    // 入力エラーの場合は終了
+                    if (count($this->arrErr) == 0) {
+                        // 郵便番号検索文作成
+                        $zipcode = $_POST['zip01'] . $_POST['zip02'];
+
+                        // 郵便番号検索
+                        $arrAdsList = SC_Utils_Ex::sfGetAddress($zipcode);
+    
+                        // 郵便番号が発見された場合
+                        if (!empty($arrAdsList)) {
+                            $data['pref'] = $arrAdsList[0]['state'];
+                            $data['addr01'] = $arrAdsList[0]['city']. $arrAdsList[0]['town'];
+			    $objFormParam->setParam($data);
+
+                            // 該当無し
+                        } else {
+                            $this->arrErr['zip01'] = '※該当する住所が見つかりませんでした。<br>';
+                        }
+                    }
+		    $this->arrForm  = $objFormParam->getHashArray();
+		    break;
+		}
                 $this->arrErr = SC_Helper_Customer_Ex::sfCustomerMypageErrorCheck($objFormParam);
                 $this->arrForm = $objFormParam->getHashArray();
 
@@ -163,4 +188,48 @@
 
         SC_Helper_Customer_Ex::sfEditCustomerData($sqlval, $customer_id);
     }
+
+    /**
+     * 入力エラーのチェック.
+     *
+     * @param array $arrRequest リクエスト値($_GET)
+     * @return array $arrErr エラーメッセージ配列
+     */
+    function fnErrorCheck($arrRequest) {
+        // パラメーター管理クラス
+        $objFormParam = new SC_FormParam_Ex();
+        // パラメーター情報の初期化
+        $objFormParam->addParam('郵便番号1', 'zip01', ZIP01_LEN, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
+        $objFormParam->addParam('郵便番号2', 'zip02', ZIP02_LEN, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
+        // // リクエスト値をセット
+	$arrData['zip01'] = $arrRequest['zip01'];
+	$arrData['zip02'] = $arrRequest['zip02'];
+        $objFormParam->setParam($arrData);
+        // エラーチェック
+        $arrErr = $objFormParam->checkError();
+        // 親ウィンドウの戻り値を格納するinputタグのnameのエラーチェック
+        if (!$this->lfInputNameCheck($addData['zip01'])) {
+            $arrErr['zip01'] = '※ 入力形式が不正です。<br />';
+        }
+        if (!$this->lfInputNameCheck($arrdata['zip02'])) {
+            $arrErr['zip02'] = '※ 入力形式が不正です。<br />';
+        }
+
+        return $arrErr;
+    }
+
+    /**
+     * エラーチェック.
+     *
+     * @param string $value
+     * @return エラーなし:true エラー:false
+     */
+    function lfInputNameCheck($value) {
+        // 半角英数字と_(アンダーバー), []以外の文字を使用していたらエラー
+        if (strlen($value) > 0 && !preg_match("/^[a-zA-Z0-9_\[\]]+$/", $value)) {
+            return false;
+        }
+
+        return true;
+    }
 }




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