Changeset 23065


Ignore:
Timestamp:
2013/08/15 08:46:23 (7 years ago)
Author:
pineray
Message:

#2342 JavaScript?のグローバルな宣言を減らす
商品関連.

Location:
branches/version-2_13-dev
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/data/Smarty/templates/admin/order/product_select.tpl

    r23063 r23065  
    6060 
    6161        if(!class1_id){ 
    62             err_text = productsClassCategories[product_id]['__unselected2']['#0']['stock_find'] ? '' : '只今品切れ中です'; 
     62            err_text = eccube.productsClassCategories[product_id]['__unselected2']['#0']['stock_find'] ? '' : '只今品切れ中です'; 
    6363        }else if(class1_id && !class2_id){ 
    64             err_text = productsClassCategories[product_id][class1_id]['#0']['stock_find'] ? '' : '只今品切れ中です'; 
     64            err_text = eccube.productsClassCategories[product_id][class1_id]['#0']['stock_find'] ? '' : '只今品切れ中です'; 
    6565        }else{ 
    66             err_text = productsClassCategories[product_id][class1_id]['#' + class2_id]['stock_find'] ? '' : '只今品切れ中です'; 
     66            err_text = eccube.productsClassCategories[product_id][class1_id]['#' + class2_id]['stock_find'] ? '' : '只今品切れ中です'; 
    6767        } 
    6868 
     
    9898 
    9999                // 規格2に選択肢を割り当てる 
    100                 classcats = productsClassCategories[product_id][sele1.value]; 
     100                classcats = eccube.productsClassCategories[product_id][sele1.value]; 
    101101                i = 0; 
    102102                for (var classcat_id2_key in classcats) { 
     
    117117        classcat_id1 = form.classcategory_id1.value; 
    118118        classcat_id2 = form.classcategory_id2 ? form.classcategory_id2.value : ''; 
    119         classcat2 = productsClassCategories[product_id][classcat_id1]['#' + classcat_id2]; 
     119        classcat2 = eccube.productsClassCategories[product_id][classcat_id1]['#' + classcat_id2]; 
    120120        // 商品規格 
    121121        eleDynamic = document.getElementById('product_class_id' + product_id); 
     
    128128        } else { 
    129129            // 規格が1つのみの場合 
    130             classcat1 = productsClassCategories[product_id][classcat_id1]['#0']; 
     130            classcat1 = eccube.productsClassCategories[product_id][classcat_id1]['#0']; 
    131131            eleDynamic.value = classcat1.product_class_id; 
    132132        } 
  • branches/version-2_13-dev/data/Smarty/templates/default/products/detail.tpl

    r23063 r23065  
    3030        var $sele1 = $form.find('select[name=classcategory_id1]'); 
    3131        var $sele2 = $form.find('select[name=classcategory_id2]'); 
    32         setClassCategories($form, product_id, $sele1, $sele2, classcat_id2_selected); 
     32        eccube.common.setClassCategories($form, product_id, $sele1, $sele2, classcat_id2_selected); 
    3333    } 
    3434    $(document).ready(function() { 
  • branches/version-2_13-dev/data/Smarty/templates/default/products/list.tpl

    r23064 r23065  
    2727        var $sele1 = $form.find('select[name=classcategory_id1]'); 
    2828        var $sele2 = $form.find('select[name=classcategory_id2]'); 
    29         setClassCategories($form, product_id, $sele1, $sele2, classcat_id2_selected); 
     29        eccube.common.setClassCategories($form, product_id, $sele1, $sele2, classcat_id2_selected); 
    3030    } 
    3131    // 並び順を変更 
  • branches/version-2_13-dev/data/Smarty/templates/sphone/products/detail.tpl

    r23058 r23065  
    2929        var $sele1 = $form.find('select[name=classcategory_id1]'); 
    3030        var $sele2 = $form.find('select[name=classcategory_id2]'); 
    31         setClassCategories($form, product_id, $sele1, $sele2, classcat_id2_selected); 
     31        eccube.common.setClassCategories($form, product_id, $sele1, $sele2, classcat_id2_selected); 
    3232    } 
    3333    $(function(){ 
  • branches/version-2_13-dev/data/class/pages/admin/order/LC_Page_Admin_Order_ProductSelect.php

    r22926 r23065  
    161161    function getTplJavascript(&$objProduct) 
    162162    { 
    163         return 'productsClassCategories = ' . SC_Utils_Ex::jsonEncode($objProduct->classCategories) . '; '; 
     163        return 'eccube.productsClassCategories = ' . SC_Utils_Ex::jsonEncode($objProduct->classCategories) . '; '; 
    164164    } 
    165165 
  • branches/version-2_13-dev/data/class/pages/products/LC_Page_Products_Detail.php

    r23055 r23065  
    148148        } 
    149149 
    150         $this->tpl_javascript .= 'classCategories = ' . SC_Utils_Ex::jsonEncode($objProduct->classCategories[$product_id]) . ';'; 
     150        $this->tpl_javascript .= 'eccube.classCategories = ' . SC_Utils_Ex::jsonEncode($objProduct->classCategories[$product_id]) . ';'; 
    151151        $this->tpl_javascript .= 'function lnOnLoad() 
    152152        {' . $this->js_lnOnload . '}'; 
  • branches/version-2_13-dev/data/class/pages/products/LC_Page_Products_List.php

    r23064 r23065  
    539539        $this->productStatus = $this->arrProducts['productStatus']; 
    540540        unset($this->arrProducts['productStatus']); 
    541         $this->tpl_javascript .= 'var productsClassCategories = ' . SC_Utils_Ex::jsonEncode($objProduct->classCategories) . ';'; 
     541        $this->tpl_javascript .= 'eccube.productsClassCategories = ' . SC_Utils_Ex::jsonEncode($objProduct->classCategories) . ';'; 
    542542        if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_PC) { 
    543543            //onloadスクリプトを設定. 在庫ありの商品のみ出力する 
  • branches/version-2_13-dev/html/js/eccube.js

    r23064 r23065  
    2121 */ 
    2222 
    23 $(function() { 
    24     // 規格1選択時 
    25     $('select[name=classcategory_id1]') 
    26         .change(function() { 
    27             var $form = $(this).parents('form'); 
    28             var product_id = $form.find('input[name=product_id]').val(); 
    29             var $sele1 = $(this); 
    30             var $sele2 = $form.find('select[name=classcategory_id2]'); 
    31  
    32             // 規格1のみの場合 
    33             if (!$sele2.length) { 
    34                 checkStock($form, product_id, $sele1.val(), '0'); 
    35                 // 規格2ありの場合 
    36             } else { 
    37                 setClassCategories($form, product_id, $sele1, $sele2); 
    38             } 
    39         }); 
    40  
    41     // 規格2選択時 
    42     $('select[name=classcategory_id2]') 
    43         .change(function() { 
    44             var $form = $(this).parents('form'); 
    45             var product_id = $form.find('input[name=product_id]').val(); 
    46             var $sele1 = $form.find('select[name=classcategory_id1]'); 
    47             var $sele2 = $(this); 
    48             checkStock($form, product_id, $sele1.val(), $sele2.val()); 
    49         }); 
    50 }); 
    51 /** 
    52  * 規格2のプルダウンを設定する. 
    53  */ 
    54 function setClassCategories($form, product_id, $sele1, $sele2, selected_id2) { 
    55     if ($sele1 && $sele1.length) { 
    56         var classcat_id1 = $sele1.val() ? $sele1.val() : ''; 
    57         if ($sele2 && $sele2.length) { 
    58             // 規格2の選択肢をクリア 
    59             $sele2.children().remove(); 
    60  
    61             var classcat2; 
    62  
    63             // 商品一覧時 
    64             if (typeof productsClassCategories != 'undefined') { 
    65                 classcat2 = productsClassCategories[product_id][classcat_id1]; 
    66             } 
    67             // 詳細表示時 
    68             else { 
    69                 classcat2 = classCategories[classcat_id1]; 
    70             } 
    71  
    72             // 規格2の要素を設定 
    73             for (var key in classcat2) { 
    74                 var id = classcat2[key]['classcategory_id2']; 
    75                 var name = classcat2[key]['name']; 
    76                 var option = $('<option />').val(id ? id : '').text(name); 
    77                 if (id == selected_id2) { 
    78                     option.attr('selected', true); 
    79                 } 
    80                 $sele2.append(option); 
    81             } 
    82             checkStock($form, product_id, $sele1.val() ? $sele1.val() : '__unselected2', 
    83                 $sele2.val() ? $sele2.val() : ''); 
    84         } 
    85     } 
    86 } 
    87  
    88 /** 
    89  * 規格の選択状態に応じて, フィールドを設定する. 
    90  */ 
    91 function checkStock($form, product_id, classcat_id1, classcat_id2) { 
    92  
    93     classcat_id2 = classcat_id2 ? classcat_id2 : ''; 
    94  
    95     var classcat2; 
    96  
    97     // 商品一覧時 
    98     if (typeof productsClassCategories != 'undefined') { 
    99         classcat2 = productsClassCategories[product_id][classcat_id1]['#' + classcat_id2]; 
    100     } 
    101     // 詳細表示時 
    102     else { 
    103         classcat2 = classCategories[classcat_id1]['#' + classcat_id2]; 
    104     } 
    105  
    106     // 商品コード 
    107     var $product_code_default = $form.find('[id^=product_code_default]'); 
    108     var $product_code_dynamic = $form.find('[id^=product_code_dynamic]'); 
    109     if (classcat2 
    110         && typeof classcat2['product_code'] != 'undefined') { 
    111         $product_code_default.hide(); 
    112         $product_code_dynamic.show(); 
    113         $product_code_dynamic.text(classcat2['product_code']); 
    114     } else { 
    115         $product_code_default.show(); 
    116         $product_code_dynamic.hide(); 
    117     } 
    118  
    119     // 在庫(品切れ) 
    120     var $cartbtn_default = $form.find('[id^=cartbtn_default]'); 
    121     var $cartbtn_dynamic = $form.find('[id^=cartbtn_dynamic]'); 
    122     if (classcat2 && classcat2['stock_find'] === false) { 
    123  
    124         $cartbtn_dynamic.text('申し訳ございませんが、只今品切れ中です。').show(); 
    125         $cartbtn_default.hide(); 
    126     } else { 
    127         $cartbtn_dynamic.hide(); 
    128         $cartbtn_default.show(); 
    129     } 
    130  
    131     // 通常価格 
    132     var $price01_default = $form.find('[id^=price01_default]'); 
    133     var $price01_dynamic = $form.find('[id^=price01_dynamic]'); 
    134     if (classcat2 
    135         && typeof classcat2['price01'] != 'undefined' 
    136         && String(classcat2['price01']).length >= 1) { 
    137  
    138         $price01_dynamic.text(classcat2['price01']).show(); 
    139         $price01_default.hide(); 
    140     } else { 
    141         $price01_dynamic.hide(); 
    142         $price01_default.show(); 
    143     } 
    144  
    145     // 販売価格 
    146     var $price02_default = $form.find('[id^=price02_default]'); 
    147     var $price02_dynamic = $form.find('[id^=price02_dynamic]'); 
    148     if (classcat2 
    149         && typeof classcat2['price02'] != 'undefined' 
    150         && String(classcat2['price02']).length >= 1) { 
    151  
    152         $price02_dynamic.text(classcat2['price02']).show(); 
    153         $price02_default.hide(); 
    154     } else { 
    155         $price02_dynamic.hide(); 
    156         $price02_default.show(); 
    157     } 
    158  
    159     // ポイント 
    160     var $point_default = $form.find('[id^=point_default]'); 
    161     var $point_dynamic = $form.find('[id^=point_dynamic]'); 
    162     if (classcat2 
    163         && typeof classcat2['point'] != 'undefined' 
    164         && String(classcat2['point']).length >= 1) { 
    165  
    166         $point_dynamic.text(classcat2['point']).show(); 
    167         $point_default.hide(); 
    168     } else { 
    169         $point_dynamic.hide(); 
    170         $point_default.show(); 
    171     } 
    172  
    173     // 商品規格 
    174     var $product_class_id_dynamic = $form.find('[id^=product_class_id]'); 
    175     if (classcat2 
    176         && typeof classcat2['product_class_id'] != 'undefined' 
    177         && String(classcat2['product_class_id']).length >= 1) { 
    178  
    179         $product_class_id_dynamic.val(classcat2['product_class_id']); 
    180     } else { 
    181         $product_class_id_dynamic.val(''); 
    182     } 
    183 } 
    184  
    18523(function( window, undefined ){ 
    18624 
     
    520358    }; 
    521359 
     360    /** 
     361     * 規格2のプルダウンを設定する. 
     362     */ 
     363    common.setClassCategories = function($form, product_id, $sele1, $sele2, selected_id2) { 
     364        if ($sele1 && $sele1.length) { 
     365            var classcat_id1 = $sele1.val() ? $sele1.val() : ''; 
     366            if ($sele2 && $sele2.length) { 
     367                // 規格2の選択肢をクリア 
     368                $sele2.children().remove(); 
     369 
     370                var classcat2; 
     371 
     372                // 商品一覧時 
     373                if (eccube.productsClassCategories !== undefined) { 
     374                    classcat2 = eccube.productsClassCategories[product_id][classcat_id1]; 
     375                } 
     376                // 詳細表示時 
     377                else { 
     378                    classcat2 = eccube.classCategories[classcat_id1]; 
     379                } 
     380 
     381                // 規格2の要素を設定 
     382                for (var key in classcat2) { 
     383                    var id = classcat2[key]['classcategory_id2']; 
     384                    var name = classcat2[key]['name']; 
     385                    var option = $('<option />').val(id ? id : '').text(name); 
     386                    if (id == selected_id2) { 
     387                        option.attr('selected', true); 
     388                    } 
     389                    $sele2.append(option); 
     390                } 
     391                eccube.common.checkStock($form, product_id, $sele1.val() ? $sele1.val() : '__unselected2', 
     392                    $sele2.val() ? $sele2.val() : ''); 
     393            } 
     394        } 
     395    }; 
     396 
     397    /** 
     398     * 規格の選択状態に応じて, フィールドを設定する. 
     399     */ 
     400    common.checkStock = function($form, product_id, classcat_id1, classcat_id2) { 
     401 
     402        classcat_id2 = classcat_id2 ? classcat_id2 : ''; 
     403 
     404        var classcat2; 
     405 
     406        // 商品一覧時 
     407        if (typeof eccube.productsClassCategories != 'undefined') { 
     408            classcat2 = eccube.productsClassCategories[product_id][classcat_id1]['#' + classcat_id2]; 
     409        } 
     410        // 詳細表示時 
     411        else { 
     412            classcat2 = eccube.classCategories[classcat_id1]['#' + classcat_id2]; 
     413        } 
     414 
     415        // 商品コード 
     416        var $product_code_default = $form.find('[id^=product_code_default]'); 
     417        var $product_code_dynamic = $form.find('[id^=product_code_dynamic]'); 
     418        if (classcat2 
     419            && typeof classcat2['product_code'] != 'undefined') { 
     420            $product_code_default.hide(); 
     421            $product_code_dynamic.show(); 
     422            $product_code_dynamic.text(classcat2['product_code']); 
     423        } else { 
     424            $product_code_default.show(); 
     425            $product_code_dynamic.hide(); 
     426        } 
     427 
     428        // 在庫(品切れ) 
     429        var $cartbtn_default = $form.find('[id^=cartbtn_default]'); 
     430        var $cartbtn_dynamic = $form.find('[id^=cartbtn_dynamic]'); 
     431        if (classcat2 && classcat2['stock_find'] === false) { 
     432 
     433            $cartbtn_dynamic.text('申し訳ございませんが、只今品切れ中です。').show(); 
     434            $cartbtn_default.hide(); 
     435        } else { 
     436            $cartbtn_dynamic.hide(); 
     437            $cartbtn_default.show(); 
     438        } 
     439 
     440        // 通常価格 
     441        var $price01_default = $form.find('[id^=price01_default]'); 
     442        var $price01_dynamic = $form.find('[id^=price01_dynamic]'); 
     443        if (classcat2 
     444            && typeof classcat2['price01'] != 'undefined' 
     445            && String(classcat2['price01']).length >= 1) { 
     446 
     447            $price01_dynamic.text(classcat2['price01']).show(); 
     448            $price01_default.hide(); 
     449        } else { 
     450            $price01_dynamic.hide(); 
     451            $price01_default.show(); 
     452        } 
     453 
     454        // 販売価格 
     455        var $price02_default = $form.find('[id^=price02_default]'); 
     456        var $price02_dynamic = $form.find('[id^=price02_dynamic]'); 
     457        if (classcat2 
     458            && typeof classcat2['price02'] != 'undefined' 
     459            && String(classcat2['price02']).length >= 1) { 
     460 
     461            $price02_dynamic.text(classcat2['price02']).show(); 
     462            $price02_default.hide(); 
     463        } else { 
     464            $price02_dynamic.hide(); 
     465            $price02_default.show(); 
     466        } 
     467 
     468        // ポイント 
     469        var $point_default = $form.find('[id^=point_default]'); 
     470        var $point_dynamic = $form.find('[id^=point_dynamic]'); 
     471        if (classcat2 
     472            && typeof classcat2['point'] != 'undefined' 
     473            && String(classcat2['point']).length >= 1) { 
     474 
     475            $point_dynamic.text(classcat2['point']).show(); 
     476            $point_default.hide(); 
     477        } else { 
     478            $point_dynamic.hide(); 
     479            $point_default.show(); 
     480        } 
     481 
     482        // 商品規格 
     483        var $product_class_id_dynamic = $form.find('[id^=product_class_id]'); 
     484        if (classcat2 
     485            && typeof classcat2['product_class_id'] != 'undefined' 
     486            && String(classcat2['product_class_id']).length >= 1) { 
     487 
     488            $product_class_id_dynamic.val(classcat2['product_class_id']); 
     489        } else { 
     490            $product_class_id_dynamic.val(''); 
     491        } 
     492    }; 
     493 
    522494    // 名前空間の重複を防ぐ 
    523495    if (window.eccube === undefined) { 
     
    526498    // グローバルに使用できるようにする 
    527499    window.eccube.common = common; 
     500 
     501    /** 
     502     * Initialize. 
     503     */ 
     504    $(function() { 
     505        // 規格1選択時 
     506        $('select[name=classcategory_id1]') 
     507            .change(function() { 
     508                var $form = $(this).parents('form'); 
     509                var product_id = $form.find('input[name=product_id]').val(); 
     510                var $sele1 = $(this); 
     511                var $sele2 = $form.find('select[name=classcategory_id2]'); 
     512 
     513                // 規格1のみの場合 
     514                if (!$sele2.length) { 
     515                    eccube.common.checkStock($form, product_id, $sele1.val(), '0'); 
     516                    // 規格2ありの場合 
     517                } else { 
     518                    eccube.common.setClassCategories($form, product_id, $sele1, $sele2); 
     519                } 
     520            }); 
     521 
     522        // 規格2選択時 
     523        $('select[name=classcategory_id2]') 
     524            .change(function() { 
     525                var $form = $(this).parents('form'); 
     526                var product_id = $form.find('input[name=product_id]').val(); 
     527                var $sele1 = $form.find('select[name=classcategory_id1]'); 
     528                var $sele2 = $(this); 
     529                eccube.common.checkStock($form, product_id, $sele1.val(), $sele2.val()); 
     530            }); 
     531    }); 
    528532})(window); 
    529  
Note: See TracChangeset for help on using the changeset viewer.