Ignore:
Timestamp:
2013/08/26 23:43:24 (11 years ago)
Author:
pineray
Message:

#2342 JavaScript?のグローバルな宣言を減らす
管理画面.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/html/user_data/packages/admin/js/eccube.admin.js

    r23080 r23129  
    2121 */ 
    2222 
    23 // 親ウィンドウをポストさせる。 
    24 function fnSubmitParent() { 
    25     // 親ウィンドウの存在確認 
    26     if(eccube.isOpener()) { 
    27         window.opener.document.form1.submit(); 
    28     } else { 
    29         window.close(); 
     23(function( window, undefined ){ 
     24 
     25    // 名前空間の重複を防ぐ 
     26    if (window.eccube === undefined) { 
     27        window.eccube = {}; 
    3028    } 
    31 } 
    32  
    33 //指定されたidの削除を行うページを実行する。 
    34 function fnDeleteMember(id, pageno) { 
    35     url = "./delete.php?id=" + id + "&pageno=" + pageno; 
    36     if(window.confirm('登録内容を削除しても宜しいでしょうか')){ 
    37         location.href = url; 
    38     } 
    39 } 
    40  
    41 // ラジオボタンチェック状態を保存 
    42 var lstsave = ""; 
    43  
    44 // ラジオボタンのチェック状態を取得する。 
    45 function fnGetRadioChecked() { 
    46     var max; 
    47     var cnt; 
    48     var names = ""; 
    49     var startname = ""; 
    50     var ret; 
    51     max = document.form1.elements.length; 
    52     lstsave = Array(max); 
    53     for(cnt = 0; cnt < max; cnt++) { 
    54         if(document.form1.elements[cnt].type == 'radio') { 
    55             name = document.form1.elements[cnt].name; 
    56             /* radioボタンは同じ名前が2回続けて検出されるので、 
    57                最初の名前の検出であるかどうかの判定 */ 
    58             // 1回目の検出 
    59             if(startname != name) { 
    60                 startname = name; 
    61                 ret = document.form1.elements[cnt].checked; 
    62                 if(ret == true){ 
    63                     // 稼働がチェックされている。 
    64                     lstsave[name] = 1; 
    65                 } 
    66             // 2回目の検出 
    67             } else { 
    68                 ret = document.form1.elements[cnt].checked; 
    69                 if(ret == true){ 
    70                     // 非稼働がチェックされている。 
    71                     lstsave[name] = 0; 
    72                 } 
    73             } 
    74         } 
    75     } 
    76 } 
    77  
    78 // 管理者メンバーページの切替 
    79 function fnMemberPage(pageno) { 
    80     location.href = "?pageno=" + pageno; 
    81 } 
    82  
    83 // ページナビで使用する 
    84 function fnNaviSearchPage(pageno, mode) { 
    85     document.form1['search_pageno'].value = pageno; 
    86     document.form1['mode'].value = mode; 
    87     document.form1.submit(); 
    88 } 
    89  
    90 // ページナビで使用する(mode = search専用) 
    91 function fnNaviSearchOnlyPage(pageno) { 
    92     document.form1['search_pageno'].value = pageno; 
    93     document.form1['mode'].value = 'search'; 
    94     document.form1.submit(); 
    95 } 
    96  
    97 // ページナビで使用する(form2) 
    98 function fnNaviSearchPage2(pageno) { 
    99     document.form2['search_pageno'].value = pageno; 
    100     document.form2['mode'].value = 'search'; 
    101     document.form2.submit(); 
    102 } 
    103  
    104 // 値を代入して指定ページにsubmit 
    105 function fnSetvalAndSubmit( fname, key, val ) { 
    106     fm = document[fname]; 
    107     fm[key].value = val; 
    108     fm.submit(); 
    109 } 
    110  
    111 // 項目に入った値をクリアする。 
    112 function fnClearText(name) { 
    113     document.form1[name].value = ""; 
    114 } 
    115  
    116 // カテゴリの追加 
    117 function fnAddCat(cat_id) { 
    118     if(window.confirm('カテゴリを登録しても宜しいでしょうか')){ 
    119         document.form1['mode'].value = 'edit'; 
    120         document.form1['cat_id'].value = cat_id; 
    121     } 
    122 } 
    123  
    124 // カテゴリの編集 
    125 function fnEditCat(parent_id, cat_id) { 
    126     document.form1['mode'].value = 'pre_edit'; 
    127     document.form1['parent_id'].value = parent_id; 
    128     document.form1['edit_cat_id'].value = cat_id; 
    129     document.form1.submit(); 
    130 } 
    131  
    132 // 選択カテゴリのチェック 
    133 function fnCheckCat(obj) { 
    134     val = obj[obj.selectedIndex].value; 
    135     if (val == ""){ 
    136         alert ("親カテゴリは選択できません"); 
    137         obj.selectedIndex = 0; 
    138     } 
    139 } 
    140  
    141 // 確認ページから登録ページへ戻る 
    142 function fnReturnPage() { 
    143     document.form1['mode'].value = 'return'; 
    144     document.form1.submit(); 
    145 } 
    146  
    147 // 規格分類登録へ移動 
    148 function fnClassCatPage(class_id) { 
    149     location.href =  "./classcategory.php?class_id=" + class_id; 
    150 } 
    151  
    152 function fnListCheck(list) { 
    153     len = list.length; 
    154     for(cnt = 0; cnt < len; cnt++) { 
    155         document.form1[list[cnt]].checked = true; 
    156     } 
    157 } 
    158  
    159 function fnAllCheck(input, selector) { 
    160     if ($(input).attr('checked')) { 
    161         $(selector).attr('checked', true); 
    162     } else { 
    163         $(selector).attr('checked', false); 
    164     } 
    165 } 
    166  
    167 //指定されたidの削除を行うページを実行する。 
    168 function fnDelete(url) { 
    169     if(window.confirm('登録内容を削除しても宜しいでしょうか')){ 
    170         location.href = url; 
     29 
     30    var eccube = window.eccube; 
     31 
     32    //指定されたidの削除を行うページを実行する。 
     33    eccube.deleteMember = function(id, pageno) { 
     34        var url = "./delete.php?id=" + id + "&pageno=" + pageno; 
     35        if(window.confirm('登録内容を削除しても宜しいでしょうか')){ 
     36            location.href = url; 
     37        } 
     38    }; 
     39 
     40    // ラジオボタンチェック状態を保存 
     41    eccube.checkedRadios = ""; 
     42 
     43    // ラジオボタンのチェック状態を取得する。 
     44    eccube.getRadioChecked = function() { 
     45        var max; 
     46        var cnt; 
     47        var startname = ""; 
     48        var ret; 
     49        var name; 
     50        max = document["form1"].elements.length; 
     51        eccube.checkedRadios = [max]; 
     52        for(cnt = 0; cnt < max; cnt++) { 
     53            if(document["form1"].elements[cnt].type === 'radio') { 
     54                name = document["form1"].elements[cnt].name; 
     55                /* radioボタンは同じ名前が2回続けて検出されるので、 
     56                 最初の名前の検出であるかどうかの判定 */ 
     57                // 1回目の検出 
     58                if(startname !== name) { 
     59                    startname = name; 
     60                    ret = document["form1"].elements[cnt].checked; 
     61                    if(ret === true){ 
     62                        // 稼働がチェックされている。 
     63                        eccube.checkedRadios[name] = 1; 
     64                    } 
     65                    // 2回目の検出 
     66                } else { 
     67                    ret = document["form1"].elements[cnt].checked; 
     68                    if(ret === true){ 
     69                        // 非稼働がチェックされている。 
     70                        eccube.checkedRadios[name] = 0; 
     71                    } 
     72                } 
     73            } 
     74        } 
     75    }; 
     76 
     77    // 管理者メンバーページの切替 
     78    eccube.moveMemberPage = function(pageno) { 
     79        location.href = "?pageno=" + pageno; 
     80    }; 
     81 
     82    // ページナビで使用する 
     83    eccube.moveNaviPage = function(pageno, mode, form) { 
     84        if (form === undefined) { 
     85            form = eccube.defaults.formId; 
     86        } 
     87        var formElement = $("form#" + form); 
     88        formElement.find("input[name='search_pageno']").val(pageno); 
     89        if (mode !== undefined) { 
     90            formElement.find("input[name='mode']").val(mode); 
     91        } 
     92        formElement.submit(); 
     93    }; 
     94 
     95    // ページナビで使用する(mode = search専用) 
     96    eccube.moveSearchPage = function(pageno) { 
     97        eccube.moveNaviPage(pageno, "search"); 
     98    }; 
     99 
     100    // ページナビで使用する(form2) 
     101    eccube.moveSecondSearchPage = function(pageno) { 
     102        eccube.moveNaviPage(pageno, "search", "form2"); 
     103    }; 
     104 
     105    // 項目に入った値をクリアする。 
     106    eccube.clearValue = function(name) { 
     107        document["form1"][name].value = ""; 
     108    }; 
     109 
     110    // 規格分類登録へ移動 
     111    eccube.moveClassCatPage = function(class_id) { 
     112        location.href =  "./classcategory.php?class_id=" + class_id; 
     113    }; 
     114 
     115    eccube.checkAllBox = function(input, selector) { 
     116        if ($(input).attr('checked')) { 
     117            $(selector).attr('checked', true); 
     118        } else { 
     119            $(selector).attr('checked', false); 
     120        } 
     121    }; 
     122 
     123    //指定されたidの削除を行うページを実行する。 
     124    eccube.moveDeleteUrl = function(url) { 
     125        if(window.confirm('登録内容を削除しても宜しいでしょうか')){ 
     126            location.href = url; 
     127        } 
    171128        return false; 
    172     } 
    173 } 
    174  
    175 //配送料金を自動入力 
    176 function fnSetDelivFee(max) { 
    177     for(cnt = 1; cnt <= max; cnt++) { 
    178         name = "fee" + cnt; 
    179         document.form1[name].value = document.form1['fee_all'].value; 
    180     } 
    181 } 
    182  
    183 // 在庫数制限判定 
    184 function fnCheckStockLimit(icolor) { 
    185     if(document.form1['stock_unlimited']) { 
    186         list = new Array( 
    187             'stock' 
    188             ); 
    189         if(document.form1['stock_unlimited'].checked) { 
    190             eccube.changeDisabled(list, icolor); 
    191             document.form1['stock'].value = ""; 
     129    }; 
     130 
     131    //配送料金を自動入力 
     132    eccube.setDelivFee = function(max) { 
     133        var name; 
     134        for(var cnt = 1; cnt <= max; cnt++) { 
     135            name = "fee" + cnt; 
     136            document["form1"][name].value = document["form1"]['fee_all'].value; 
     137        } 
     138    }; 
     139 
     140    // 在庫数制限判定 
     141    eccube.checkStockLimit = function(icolor) { 
     142        if(document["form1"]['stock_unlimited']) { 
     143            var list = ['stock']; 
     144            if(document["form1"]['stock_unlimited'].checked) { 
     145                eccube.changeDisabled(list, icolor); 
     146                document["form1"]['stock'].value = ""; 
     147            } else { 
     148                eccube.changeDisabled(list, ''); 
     149            } 
     150        } 
     151    }; 
     152 
     153    // 確認メッセージ 
     154    eccube.doConfirm = function() { 
     155        return window.confirm('この内容で登録しても宜しいでしょうか'); 
     156    }; 
     157 
     158    // フォームに代入してからサブミットする。 
     159    eccube.insertValueAndSubmit = function(fm, ele, val, msg){ 
     160        var ret; 
     161        if (msg !== undefined){ 
     162            ret = window.confirm(msg); 
    192163        } else { 
    193             eccube.changeDisabled(list, ''); 
    194         } 
    195     } 
    196 } 
    197  
    198 // Form指定のSubmit 
    199 function fnFormSubmit(form) { 
    200     document.forms[form].submit(); 
    201 } 
    202  
    203 // 確認メッセージ 
    204 function fnConfirm() { 
    205     if(window.confirm('この内容で登録しても宜しいでしょうか')){ 
    206         return true; 
    207     } 
    208     return false; 
    209 } 
    210  
    211 //削除確認メッセージ 
    212 function fnDeleteConfirm() { 
    213     if(window.confirm('削除しても宜しいでしょうか')){ 
    214         return true; 
    215     } 
    216     return false; 
    217 } 
    218  
    219 //メルマガ形式変更確認メッセージ 
    220 function fnmerumagaupdateConfirm() { 
    221     if(window.confirm("既に登録されているメールアドレスです。\nメルマガの種類が変更されます。宜しいですか?")){ 
    222         return true; 
    223     } 
    224     return false; 
    225 } 
    226  
    227 // フォームに代入してからサブミットする。 
    228 function fnInsertValAndSubmit( fm, ele, val, msg ){ 
    229     if ( msg ){ 
    230         ret = window.confirm(msg); 
    231     } else { 
    232         ret = true; 
    233     } 
    234     if( ret ){ 
    235         fm[ele].value = val; 
    236         fm.submit(); 
     164            ret = true; 
     165        } 
     166        if(ret){ 
     167            fm[ele].value = val; 
     168            fm.submit(); 
     169            return false; 
     170        } 
    237171        return false; 
    238     } 
    239     return false; 
    240 } 
    241  
    242 // 自分以外の要素を有効・無効にする 
    243 function fnSetDisabled ( f_name, e_name, flag ) { 
    244     fm = document[f_name]; 
    245  
    246     // 必須項目のチェック 
    247     for(cnt = 0; cnt < fm.elements.length; cnt++) { 
    248         if( fm[cnt].name != e_name && fm[cnt].name != 'subm' && fm[cnt].name != 'mode') { 
    249             fm[cnt].disabled = flag; 
    250             if ( flag == true ){ 
    251                 fm[cnt].style.backgroundColor = "#cccccc"; 
    252             } else { 
    253                 fm[cnt].style.backgroundColor = "#ffffff"; 
    254             } 
    255         } 
    256     } 
    257 } 
    258  
    259 //リストボックス内の項目を移動する 
    260 function fnMoveCat(sel1, sel2, mode_name) { 
    261     var fm = document.form1; 
    262     for(i = 0; i < fm[sel1].length; i++) { 
    263         if(fm[sel1].options[i].selected) { 
    264             if(fm[sel2].value != "") { 
    265                 fm[sel2].value += "-" + fm[sel1].options[i].value; 
    266             } else { 
    267                 fm[sel2].value = fm[sel1].options[i].value; 
    268             } 
    269         } 
    270     } 
    271     fm["mode"].value = mode_name; 
    272     fm.submit(); 
    273 } 
    274  
    275 //リストボックス内の項目を削除する 
    276 function fnDelListContents(sel1, sel2, mode_name) { 
    277     fm = document.form1; 
    278     for(j = 0; j < fm[sel1].length; j++) { 
    279         if(fm[sel1].options[i].selected) { 
    280             fm[sel2].value = fm[sel2].value.replace(fm[sel1].options[i].value, ""); 
    281         } 
    282     } 
    283  
    284     fm["mode"].value = mode_name; 
    285     fm.submit(); 
    286 } 
    287  
    288 // タグの表示非表示切り替え 
    289 function fnDispChange(disp_id, inner_id, disp_flg){ 
    290     disp_state = document.getElementById(disp_id).style.display; 
    291  
    292     if (disp_state == "") { 
    293         document.form1[disp_flg].value="none"; 
    294         document.getElementById(disp_id).style.display="none"; 
    295         document.getElementById(inner_id).innerHTML = '<FONT Color="#FFFF99"> << 表示 </FONT>'; 
    296     }else{ 
    297         document.form1[disp_flg].value=""; 
    298         document.getElementById(disp_id).style.display=""; 
    299         document.getElementById(inner_id).innerHTML = ' <FONT Color="#FFFF99"> >> 非表示 </FONT>'; 
    300     } 
    301 } 
    302  
    303 // ページ読み込み時の処理 
    304 $(function(){ 
    305 // ヘッダナビゲーション 
    306     $("#navi li").hover( 
    307         function(){ 
    308             $(this).addClass("sfhover"); 
    309         }, 
    310         function(){ 
    311             $(this).removeClass("sfhover"); 
    312         } 
    313     ); 
    314 }); 
    315 //制限数判定 
    316 function fnCheckLimit(elem1, elem2, icolor) { 
    317     if(document.form1[elem2]) { 
    318         list = new Array( 
    319                 elem1 
    320             ); 
    321         if(document.form1[elem2].checked) { 
    322             eccube.changeDisabled(list, icolor); 
    323             document.form1[elem1].value = ""; 
     172    }; 
     173 
     174    //制限数判定 
     175    eccube.checkLimit = function(elem1, elem2, icolor) { 
     176        if(document["form1"][elem2]) { 
     177            var list = [elem1]; 
     178            if(document["form1"][elem2].checked) { 
     179                eccube.changeDisabled(list, icolor); 
     180                document["form1"][elem1].value = ""; 
     181            } else { 
     182                eccube.changeDisabled(list, ''); 
     183            } 
     184        } 
     185    }; 
     186 
     187    /** 
     188     * ファイル管理 
     189     */ 
     190    eccube.fileManager = { 
     191        tree:"",                // 生成HTML格納 
     192        arrTreeStatus:[],       // ツリー状態保持 
     193        old_select_id:'',       // 前回選択していたファイル 
     194        selectFileHidden:"",    // 選択したファイルのhidden名 
     195        treeStatusHidden:"",    // ツリー状態保存用のhidden名 
     196        modeHidden:""           // modeセットhidden名 
     197    }; 
     198 
     199    // ツリー表示 
     200    eccube.fileManager.viewFileTree = function(view_id, arrTree, openFolder, selectHidden, treeHidden, mode) { 
     201        eccube.fileManager.selectFileHidden = selectHidden; 
     202        eccube.fileManager.treeStatusHidden = treeHidden; 
     203        eccube.fileManager.modeHidden = mode; 
     204 
     205        var id, level, old_id, old_level, tmp_level, rank_img, display, arrFileSplit, file_name, folder_img; 
     206 
     207        for(var i = 0; i < arrTree.length; i++) { 
     208            id = arrTree[i][0]; 
     209            level = arrTree[i][3]; 
     210 
     211            if(i === 0) { 
     212                old_id = "0"; 
     213                old_level = 0; 
     214            } else { 
     215                old_id = arrTree[i-1][0]; 
     216                old_level = arrTree[i-1][3]; 
     217            } 
     218 
     219            // 階層上へ戻る 
     220            if(level <= (old_level - 1)) { 
     221                tmp_level = old_level - level; 
     222                for(var up_roop = 0; up_roop <= tmp_level; up_roop++) { 
     223                    eccube.fileManager.tree += '</div>'; 
     224                } 
     225            } 
     226 
     227            // 同一階層で次のフォルダへ 
     228            if(id !== old_id && level === old_level) { 
     229                eccube.fileManager.tree += '</div>'; 
     230            } 
     231 
     232            // 階層の分だけスペースを入れる 
     233            for(var space_cnt = 0; space_cnt < arrTree[i][3]; space_cnt++) { 
     234                eccube.fileManager.tree += "&nbsp;&nbsp;&nbsp;"; 
     235            } 
     236 
     237            // 階層画像の表示・非表示処理 
     238            if(arrTree[i][4]) { 
     239                if(arrTree[i][1] === '_parent') { 
     240                    rank_img = eccube.fileManager["IMG_MINUS"]; 
     241                } else { 
     242                    rank_img = eccube.fileManager["IMG_NORMAL"]; 
     243                } 
     244                // 開き状態を保持 
     245                eccube.fileManager.arrTreeStatus.push(arrTree[i][2]); 
     246                display = 'block'; 
     247            } else { 
     248                if(arrTree[i][1] === '_parent') { 
     249                    rank_img = eccube.fileManager["IMG_PLUS"]; 
     250                } else { 
     251                    rank_img = eccube.fileManager["IMG_NORMAL"]; 
     252                } 
     253                display = 'none'; 
     254            } 
     255 
     256            arrFileSplit = arrTree[i][2].split("/"); 
     257            file_name = arrFileSplit[arrFileSplit.length-1]; 
     258 
     259            // フォルダの画像を選択 
     260            if(arrTree[i][2] === openFolder) { 
     261                folder_img = eccube.fileManager["IMG_FOLDER_OPEN"]; 
     262                file_name = "<b>" + file_name + "</b>"; 
     263            } else { 
     264                folder_img = eccube.fileManager["IMG_FOLDER_CLOSE"]; 
     265            } 
     266 
     267            // 階層画像に子供がいたらオンクリック処理をつける 
     268            if(rank_img !== eccube.fileManager["IMG_NORMAL"]) { 
     269                eccube.fileManager.tree += '<a href="javascript:eccube.fileManager.toggleTreeMenu(\'tree'+ i +'\',\'rank_img'+ i +'\',\''+ arrTree[i][2] +'\')"><img src="'+ rank_img +'" border="0" name="rank_img'+ i +'" id="rank_img'+ i +'">'; 
     270            } else { 
     271                eccube.fileManager.tree += '<img src="'+ rank_img +'" border="0" name="rank_img'+ i +'" id="rank_img'+ i +'">'; 
     272            } 
     273            eccube.fileManager.tree += '<a href="javascript:fnFolderOpen(\''+ arrTree[i][2] +'\')"><img src="'+ folder_img +'" border="0" name="tree_img'+ i +'" id="tree_img'+ i +'">&nbsp;'+ file_name +'</a><br/>'; 
     274            eccube.fileManager.tree += '<div id="tree'+ i +'" style="display:'+ display +'">'; 
     275        } 
     276        document.getElementById(view_id).innerHTML = eccube.fileManager.tree; 
     277        //document.tree_form.tree_test2.focus(); 
     278    }; 
     279 
     280    // Tree状態をhiddenにセット 
     281    eccube.fileManager.setTreeStatus = function(name) { 
     282        var tree_status = ""; 
     283        for(var i=0; i < eccube.fileManager.arrTreeStatus.length ;i++) { 
     284            if(i !== 0) { 
     285                tree_status += '|'; 
     286            } 
     287            tree_status += eccube.fileManager.arrTreeStatus[i]; 
     288        } 
     289        document["form1"][name].value = tree_status; 
     290    }; 
     291 
     292    // 階層ツリーメニュー表示・非表示処理 
     293    eccube.fileManager.toggleTreeMenu = function(tName, imgName, path) { 
     294        var tMenu = $("#" + tName); 
     295 
     296        if(tMenu.css("display") === 'none') { 
     297            $("#" +imgName).attr("src", eccube.fileManager["IMG_MINUS"]); 
     298            tMenu.show(); 
     299            // 階層の開いた状態を保持 
     300            eccube.fileManager.arrTreeStatus.push(path); 
    324301        } else { 
    325             eccube.changeDisabled(list, ''); 
    326         } 
    327     } 
    328 } 
     302            $("#" +imgName).attr("src", eccube.fileManager["IMG_PLUS"]); 
     303            tMenu.hide(); 
     304            // 閉じ状態を保持 
     305            eccube.fileManager["fnDelTreeStatus"](path); 
     306        } 
     307    }; 
     308 
     309    // Tree状態を削除する(閉じる状態へ) 
     310    eccube.fileManager.deleteTreeStatus = function(path) { 
     311        for(var i=0; i < eccube.fileManager.arrTreeStatus.length ;i++) { 
     312            if(eccube.fileManager.arrTreeStatus[i] === path) { 
     313                eccube.fileManager.arrTreeStatus[i] = ""; 
     314            } 
     315        } 
     316    }; 
     317 
     318    // ファイルリストダブルクリック処理 
     319    eccube.fileManager.doubleClick = function(arrTree, path, is_dir, now_dir, is_parent) { 
     320        if(is_dir) { 
     321            if(!is_parent) { 
     322                for(var cnt = 0; cnt < arrTree.length; cnt++) { 
     323                    if(now_dir === arrTree[cnt][2]) { 
     324                        var open_flag = false; 
     325                        for(var status_cnt = 0; status_cnt < eccube.fileManager.arrTreeStatus.length; status_cnt++) { 
     326                            if(eccube.fileManager.arrTreeStatus[status_cnt] === arrTree[cnt][2]) { 
     327                                open_flag = true; 
     328                            } 
     329                        } 
     330                        if(!open_flag) { 
     331                            eccube.fileManager.toggleTreeMenu('tree'+cnt, 'rank_img'+cnt, arrTree[cnt][2]); 
     332                        } 
     333                    } 
     334                } 
     335            } 
     336            eccube.fileManager.openFolder(path); 
     337        } else { 
     338            // Download 
     339            eccube.setModeAndSubmit('download','',''); 
     340        } 
     341    }; 
     342 
     343    // フォルダオープン処理 
     344    eccube.fileManager.openFolder = function(path) { 
     345        // クリックしたフォルダ情報を保持 
     346        document["form1"][eccube.fileManager.selectFileHidden].value = path; 
     347        // treeの状態をセット 
     348        eccube.fileManager.setTreeStatus(eccube.fileManager.treeStatusHidden); 
     349        // submit 
     350        eccube.setModeAndSubmit(eccube.fileManager.modeHidden,'',''); 
     351    }; 
     352 
     353    // ファイル選択 
     354    eccube.fileManager.selectFile = function(id) { 
     355        eccube.fileManager.old_select_id = id; 
     356    }; 
     357 
     358    // グローバルに使用できるようにする 
     359    window.eccube = eccube; 
     360 
     361    /** 
     362     * Initialize. 
     363     */ 
     364    $(function() { 
     365        // ヘッダナビゲーション 
     366        $("#navi").find("li").hover( 
     367            function(){ 
     368                $(this).addClass("sfhover"); 
     369            }, 
     370            function(){ 
     371                $(this).removeClass("sfhover"); 
     372            } 
     373        ); 
     374    }); 
     375})(window); 
    329376 
    330377(function($) { 
     
    338385            bread_crumbs: '', 
    339386            start_node: '<span>ホーム</span>', 
    340             anchor_node: '<a onclick="eccube.setModeAndSubmit(\'tree\', \'parent_category_id\', ' 
    341                 + '{category_id}); return false" href="javascript:;" />', 
     387            anchor_node: '<a onclick="eccube.setModeAndSubmit(\'tree\', \'parent_category_id\', ' + 
     388                '{category_id}); return false" href="javascript:;" />', 
    342389            delimiter_node: '<span>&nbsp;&gt;&nbsp;</span>' 
    343390        }; 
     
    352399 
    353400            for (var i = total - 1; i >= 0; i--) { 
    354                 if (i == total -1) $node.append(o.delimiter_node); 
    355  
    356                 var anchor = o.anchor_node 
    357                     .replace(/{category_id}/ig, 
    358                         o.bread_crumbs[i].category_id); 
     401                if (i === total -1) { 
     402                    $node.append(o.delimiter_node); 
     403                } 
     404 
     405                var anchor = o.anchor_node.replace(/{category_id}/ig, o.bread_crumbs[i]["category_id"]); 
    359406                $(anchor) 
    360                     .text(o.bread_crumbs[i].category_name) 
     407                    .text(o.bread_crumbs[i]["category_name"]) 
    361408                    .appendTo($node); 
    362409 
    363                 if (i > 0) $node.append(o.delimiter_node); 
     410                if (i > 0) { 
     411                    $node.append(o.delimiter_node); 
     412                } 
    364413            } 
    365414            $this.html($node); 
     
    368417    }; 
    369418})(jQuery); 
    370  
    371 /** 
    372  * ファイル管理 
    373  */ 
    374 var tree = "";                      // 生成HTML格納 
    375 var count = 0;                      // ループカウンタ 
    376 var arrTreeStatus = [];             // ツリー状態保持 
    377 var old_select_id = '';             // 前回選択していたファイル 
    378 var selectFileHidden = "";          // 選択したファイルのhidden名 
    379 var treeStatusHidden = "";          // ツリー状態保存用のhidden名 
    380 var modeHidden = "";                // modeセットhidden名 
    381  
    382 // ツリー表示 
    383 function fnTreeView(view_id, arrTree, openFolder, selectHidden, treeHidden, mode) { 
    384     selectFileHidden = selectHidden; 
    385     treeStatusHidden = treeHidden; 
    386     modeHidden = mode; 
    387  
    388     for(i = 0; i < arrTree.length; i++) { 
    389         id = arrTree[i][0]; 
    390         level = arrTree[i][3]; 
    391  
    392         if(i == 0) { 
    393             old_id = "0"; 
    394             old_level = 0; 
    395         } else { 
    396             old_id = arrTree[i-1][0]; 
    397             old_level = arrTree[i-1][3]; 
    398         } 
    399  
    400         // 階層上へ戻る 
    401         if(level <= (old_level - 1)) { 
    402             tmp_level = old_level - level; 
    403             for(up_roop = 0; up_roop <= tmp_level; up_roop++) { 
    404                 tree += '</div>'; 
    405             } 
    406         } 
    407  
    408         // 同一階層で次のフォルダへ 
    409         if(id != old_id && level == old_level) tree += '</div>'; 
    410  
    411         // 階層の分だけスペースを入れる 
    412         for(space_cnt = 0; space_cnt < arrTree[i][3]; space_cnt++) { 
    413             tree += "&nbsp;&nbsp;&nbsp;"; 
    414         } 
    415  
    416         // 階層画像の表示・非表示処理 
    417         if(arrTree[i][4]) { 
    418             if(arrTree[i][1] == '_parent') { 
    419                 rank_img = IMG_MINUS; 
    420             } else { 
    421                 rank_img = IMG_NORMAL; 
    422             } 
    423             // 開き状態を保持 
    424             arrTreeStatus.push(arrTree[i][2]); 
    425             display = 'block'; 
    426         } else { 
    427             if(arrTree[i][1] == '_parent') { 
    428                 rank_img = IMG_PLUS; 
    429             } else { 
    430                 rank_img = IMG_NORMAL; 
    431             } 
    432             display = 'none'; 
    433         } 
    434  
    435         arrFileSplit = arrTree[i][2].split("/"); 
    436         file_name = arrFileSplit[arrFileSplit.length-1]; 
    437  
    438         // フォルダの画像を選択 
    439         if(arrTree[i][2] == openFolder) { 
    440             folder_img = IMG_FOLDER_OPEN; 
    441             file_name = "<b>" + file_name + "</b>"; 
    442         } else { 
    443             folder_img = IMG_FOLDER_CLOSE; 
    444         } 
    445  
    446         // 階層画像に子供がいたらオンクリック処理をつける 
    447         if(rank_img != IMG_NORMAL) { 
    448             tree += '<a href="javascript:fnTreeMenu(\'tree'+ i +'\',\'rank_img'+ i +'\',\''+ arrTree[i][2] +'\')"><img src="'+ rank_img +'" border="0" name="rank_img'+ i +'" id="rank_img'+ i +'">'; 
    449         } else { 
    450             tree += '<img src="'+ rank_img +'" border="0" name="rank_img'+ i +'" id="rank_img'+ i +'">'; 
    451         } 
    452         tree += '<a href="javascript:fnFolderOpen(\''+ arrTree[i][2] +'\')"><img src="'+ folder_img +'" border="0" name="tree_img'+ i +'" id="tree_img'+ i +'">&nbsp;'+ file_name +'</a><br/>'; 
    453         tree += '<div id="tree'+ i +'" style="display:'+ display +'">'; 
    454     } 
    455     fnDrow(view_id, tree); 
    456     //document.tree_form.tree_test2.focus(); 
    457 } 
    458  
    459 // Tree状態をhiddenにセット 
    460 function setTreeStatus(name) { 
    461     var tree_status = ""; 
    462     for(i=0; i < arrTreeStatus.length ;i++) { 
    463         if(i != 0) tree_status += '|'; 
    464         tree_status += arrTreeStatus[i]; 
    465     } 
    466     document.form1[name].value = tree_status; 
    467 } 
    468  
    469 // Tree状態を削除する(閉じる状態へ) 
    470 function fnDelTreeStatus(path) { 
    471     for(i=0; i < arrTreeStatus.length ;i++) { 
    472         if(arrTreeStatus[i] == path) { 
    473             arrTreeStatus[i] = ""; 
    474         } 
    475     } 
    476 } 
    477 // ツリー描画 
    478 function fnDrow(id, tree) { 
    479     // ブラウザ取得 
    480     MyBR = fnGetMyBrowser(); 
    481     // ブラウザ事に処理を切り分け 
    482     switch(myBR) { 
    483         // IE4の時の表示 
    484         case 'I4': 
    485             document.all(id).innerHTML = tree; 
    486             break; 
    487         // NN4の時の表示 
    488         case 'N4': 
    489             document.layers[id].document.open(); 
    490             document.layers[id].document.write("<div>"); 
    491             document.layers[id].document.write(tree); 
    492             document.layers[id].document.write("</div>"); 
    493             document.layers[id].document.close(); 
    494             break; 
    495         default: 
    496             document.getElementById(id).innerHTML=tree; 
    497             break; 
    498     } 
    499 } 
    500  
    501 // 階層ツリーメニュー表示・非表示処理 
    502 function fnTreeMenu(tName, imgName, path) { 
    503     tMenu = $("#" + tName); 
    504  
    505     if(tMenu.css("display") == 'none') { 
    506         fnChgImg(IMG_MINUS, imgName); 
    507         tMenu.show(); 
    508         // 階層の開いた状態を保持 
    509         arrTreeStatus.push(path); 
    510     } else { 
    511         fnChgImg(IMG_PLUS, imgName); 
    512         tMenu.hide(); 
    513         // 閉じ状態を保持 
    514         fnDelTreeStatus(path); 
    515     } 
    516 } 
    517  
    518 // ファイルリストダブルクリック処理 
    519 function fnDbClick(arrTree, path, is_dir, now_dir, is_parent) { 
    520     if(is_dir) { 
    521         if(!is_parent) { 
    522             for(cnt = 0; cnt < arrTree.length; cnt++) { 
    523                 if(now_dir == arrTree[cnt][2]) { 
    524                     open_flag = false; 
    525                     for(status_cnt = 0; status_cnt < arrTreeStatus.length; status_cnt++) { 
    526                         if(arrTreeStatus[status_cnt] == arrTree[cnt][2]) open_flag = true; 
    527                     } 
    528                     if(!open_flag) fnTreeMenu('tree'+cnt, 'rank_img'+cnt, arrTree[cnt][2]); 
    529                 } 
    530             } 
    531         } 
    532         fnFolderOpen(path); 
    533     } else { 
    534         // Download 
    535         eccube.setModeAndSubmit('download','',''); 
    536     } 
    537 } 
    538  
    539 // フォルダオープン処理 
    540 function fnFolderOpen(path) { 
    541     // クリックしたフォルダ情報を保持 
    542     document.form1[selectFileHidden].value = path; 
    543     // treeの状態をセット 
    544     setTreeStatus(treeStatusHidden); 
    545     // submit 
    546     eccube.setModeAndSubmit(modeHidden,'',''); 
    547 } 
    548  
    549 // 閲覧ブラウザ取得 
    550 function fnGetMyBrowser() { 
    551     myOP = window.opera;            // OP 
    552     myN6 = document.getElementById; // N6 
    553     myIE = document.all;            // IE 
    554     myN4 = document.layers;         // N4 
    555     if      (myOP) myBR="O6";       // OP6以上 
    556     else if (myIE) myBR="I4";       // IE4以上 
    557     else if (myN6) myBR="N6";       // NS6以上 
    558     else if (myN4) myBR="N4";       // NN4 
    559     else           myBR="";         // その他 
    560  
    561     return myBR; 
    562 } 
    563  
    564 // imgタグの画像変更 
    565 function fnChgImg(fileName,imgName){ 
    566     $("#" + imgName).attr("src", fileName); 
    567 } 
    568  
    569 // ファイル選択 
    570 function fnSelectFile(id, val) { 
    571     old_select_id = id; 
    572 } 
Note: See TracChangeset for help on using the changeset viewer.