source: branches/version-2_13-dev/html/user_data/packages/admin/js/eccube.admin.legacy.js @ 23129

Revision 23129, 15.5 KB checked in by pineray, 11 years ago (diff)

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

Line 
1/*
2 * This file is part of EC-CUBE
3 *
4 * Copyright(c) 2000-2013 LOCKON CO.,LTD. All Rights Reserved.
5 *
6 * http://www.lockon.co.jp/
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21 */
22
23// 親ウィンドウをポストさせる。
24function fnSubmitParent() {
25    // 親ウィンドウの存在確認
26    if(eccube.isOpener()) {
27        window.opener.document.form1.submit();
28    } else {
29        window.close();
30    }
31}
32
33//指定されたidの削除を行うページを実行する。
34function fnDeleteMember(id, pageno) {
35    url = "./delete.php?id=" + id + "&pageno=" + pageno;
36    if(window.confirm('登録内容を削除しても宜しいでしょうか')){
37        location.href = url;
38    }
39}
40
41// ラジオボタンチェック状態を保存
42var lstsave = "";
43
44// ラジオボタンのチェック状態を取得する。
45function 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// 管理者メンバーページの切替
79function fnMemberPage(pageno) {
80    location.href = "?pageno=" + pageno;
81}
82
83// ページナビで使用する
84function 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専用)
91function fnNaviSearchOnlyPage(pageno) {
92    document.form1['search_pageno'].value = pageno;
93    document.form1['mode'].value = 'search';
94    document.form1.submit();
95}
96
97// ページナビで使用する(form2)
98function fnNaviSearchPage2(pageno) {
99    document.form2['search_pageno'].value = pageno;
100    document.form2['mode'].value = 'search';
101    document.form2.submit();
102}
103
104// 値を代入して指定ページにsubmit
105function fnSetvalAndSubmit( fname, key, val ) {
106    fm = document[fname];
107    fm[key].value = val;
108    fm.submit();
109}
110
111// 項目に入った値をクリアする。
112function fnClearText(name) {
113    document.form1[name].value = "";
114}
115
116// カテゴリの追加
117function 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// カテゴリの編集
125function 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// 選択カテゴリのチェック
133function fnCheckCat(obj) {
134    val = obj[obj.selectedIndex].value;
135    if (val == ""){
136        alert ("親カテゴリは選択できません");
137        obj.selectedIndex = 0;
138    }
139}
140
141// 確認ページから登録ページへ戻る
142function fnReturnPage() {
143    document.form1['mode'].value = 'return';
144    document.form1.submit();
145}
146
147// 規格分類登録へ移動
148function fnClassCatPage(class_id) {
149    location.href =  "./classcategory.php?class_id=" + class_id;
150}
151
152function fnListCheck(list) {
153    len = list.length;
154    for(cnt = 0; cnt < len; cnt++) {
155        document.form1[list[cnt]].checked = true;
156    }
157}
158
159function 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の削除を行うページを実行する。
168function fnDelete(url) {
169    if(window.confirm('登録内容を削除しても宜しいでしょうか')){
170        location.href = url;
171        return false;
172    }
173}
174
175//配送料金を自動入力
176function 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// 在庫数制限判定
184function 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 = "";
192        } else {
193            eccube.changeDisabled(list, '');
194        }
195    }
196}
197
198// Form指定のSubmit
199function fnFormSubmit(form) {
200    document.forms[form].submit();
201}
202
203// 確認メッセージ
204function fnConfirm() {
205    if(window.confirm('この内容で登録しても宜しいでしょうか')){
206        return true;
207    }
208    return false;
209}
210
211//削除確認メッセージ
212function fnDeleteConfirm() {
213    if(window.confirm('削除しても宜しいでしょうか')){
214        return true;
215    }
216    return false;
217}
218
219//メルマガ形式変更確認メッセージ
220function fnmerumagaupdateConfirm() {
221    if(window.confirm("既に登録されているメールアドレスです。\nメルマガの種類が変更されます。宜しいですか?")){
222        return true;
223    }
224    return false;
225}
226
227// フォームに代入してからサブミットする。
228function 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();
237        return false;
238    }
239    return false;
240}
241
242// 自分以外の要素を有効・無効にする
243function 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//リストボックス内の項目を移動する
260function 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//リストボックス内の項目を削除する
276function 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// タグの表示非表示切り替え
289function 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//制限数判定
304function fnCheckLimit(elem1, elem2, icolor) {
305    if(document.form1[elem2]) {
306        list = new Array(
307                elem1
308            );
309        if(document.form1[elem2].checked) {
310            eccube.changeDisabled(list, icolor);
311            document.form1[elem1].value = "";
312        } else {
313            eccube.changeDisabled(list, '');
314        }
315    }
316}
317
318/**
319 * ファイル管理
320 */
321var tree = "";                      // 生成HTML格納
322var count = 0;                      // ループカウンタ
323var arrTreeStatus = [];             // ツリー状態保持
324var old_select_id = '';             // 前回選択していたファイル
325var selectFileHidden = "";          // 選択したファイルのhidden名
326var treeStatusHidden = "";          // ツリー状態保存用のhidden名
327var modeHidden = "";                // modeセットhidden名
328
329// ツリー表示
330function fnTreeView(view_id, arrTree, openFolder, selectHidden, treeHidden, mode) {
331    selectFileHidden = selectHidden;
332    treeStatusHidden = treeHidden;
333    modeHidden = mode;
334
335    for(i = 0; i < arrTree.length; i++) {
336        id = arrTree[i][0];
337        level = arrTree[i][3];
338
339        if(i == 0) {
340            old_id = "0";
341            old_level = 0;
342        } else {
343            old_id = arrTree[i-1][0];
344            old_level = arrTree[i-1][3];
345        }
346
347        // 階層上へ戻る
348        if(level <= (old_level - 1)) {
349            tmp_level = old_level - level;
350            for(up_roop = 0; up_roop <= tmp_level; up_roop++) {
351                tree += '</div>';
352            }
353        }
354
355        // 同一階層で次のフォルダへ
356        if(id != old_id && level == old_level) tree += '</div>';
357
358        // 階層の分だけスペースを入れる
359        for(space_cnt = 0; space_cnt < arrTree[i][3]; space_cnt++) {
360            tree += "&nbsp;&nbsp;&nbsp;";
361        }
362
363        // 階層画像の表示・非表示処理
364        if(arrTree[i][4]) {
365            if(arrTree[i][1] == '_parent') {
366                rank_img = IMG_MINUS;
367            } else {
368                rank_img = IMG_NORMAL;
369            }
370            // 開き状態を保持
371            arrTreeStatus.push(arrTree[i][2]);
372            display = 'block';
373        } else {
374            if(arrTree[i][1] == '_parent') {
375                rank_img = IMG_PLUS;
376            } else {
377                rank_img = IMG_NORMAL;
378            }
379            display = 'none';
380        }
381
382        arrFileSplit = arrTree[i][2].split("/");
383        file_name = arrFileSplit[arrFileSplit.length-1];
384
385        // フォルダの画像を選択
386        if(arrTree[i][2] == openFolder) {
387            folder_img = IMG_FOLDER_OPEN;
388            file_name = "<b>" + file_name + "</b>";
389        } else {
390            folder_img = IMG_FOLDER_CLOSE;
391        }
392
393        // 階層画像に子供がいたらオンクリック処理をつける
394        if(rank_img != IMG_NORMAL) {
395            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 +'">';
396        } else {
397            tree += '<img src="'+ rank_img +'" border="0" name="rank_img'+ i +'" id="rank_img'+ i +'">';
398        }
399        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/>';
400        tree += '<div id="tree'+ i +'" style="display:'+ display +'">';
401    }
402    fnDrow(view_id, tree);
403    //document.tree_form.tree_test2.focus();
404}
405
406// Tree状態をhiddenにセット
407function setTreeStatus(name) {
408    var tree_status = "";
409    for(i=0; i < arrTreeStatus.length ;i++) {
410        if(i != 0) tree_status += '|';
411        tree_status += arrTreeStatus[i];
412    }
413    document.form1[name].value = tree_status;
414}
415
416// Tree状態を削除する(閉じる状態へ)
417function fnDelTreeStatus(path) {
418    for(i=0; i < arrTreeStatus.length ;i++) {
419        if(arrTreeStatus[i] == path) {
420            arrTreeStatus[i] = "";
421        }
422    }
423}
424// ツリー描画
425function fnDrow(id, tree) {
426    // ブラウザ取得
427    MyBR = fnGetMyBrowser();
428    // ブラウザ事に処理を切り分け
429    switch(myBR) {
430        // IE4の時の表示
431        case 'I4':
432            document.all(id).innerHTML = tree;
433            break;
434        // NN4の時の表示
435        case 'N4':
436            document.layers[id].document.open();
437            document.layers[id].document.write("<div>");
438            document.layers[id].document.write(tree);
439            document.layers[id].document.write("</div>");
440            document.layers[id].document.close();
441            break;
442        default:
443            document.getElementById(id).innerHTML=tree;
444            break;
445    }
446}
447
448// 階層ツリーメニュー表示・非表示処理
449function fnTreeMenu(tName, imgName, path) {
450    tMenu = $("#" + tName);
451
452    if(tMenu.css("display") == 'none') {
453        fnChgImg(IMG_MINUS, imgName);
454        tMenu.show();
455        // 階層の開いた状態を保持
456        arrTreeStatus.push(path);
457    } else {
458        fnChgImg(IMG_PLUS, imgName);
459        tMenu.hide();
460        // 閉じ状態を保持
461        fnDelTreeStatus(path);
462    }
463}
464
465// ファイルリストダブルクリック処理
466function fnDbClick(arrTree, path, is_dir, now_dir, is_parent) {
467    if(is_dir) {
468        if(!is_parent) {
469            for(cnt = 0; cnt < arrTree.length; cnt++) {
470                if(now_dir == arrTree[cnt][2]) {
471                    open_flag = false;
472                    for(status_cnt = 0; status_cnt < arrTreeStatus.length; status_cnt++) {
473                        if(arrTreeStatus[status_cnt] == arrTree[cnt][2]) open_flag = true;
474                    }
475                    if(!open_flag) fnTreeMenu('tree'+cnt, 'rank_img'+cnt, arrTree[cnt][2]);
476                }
477            }
478        }
479        fnFolderOpen(path);
480    } else {
481        // Download
482        eccube.setModeAndSubmit('download','','');
483    }
484}
485
486// フォルダオープン処理
487function fnFolderOpen(path) {
488    // クリックしたフォルダ情報を保持
489    document.form1[selectFileHidden].value = path;
490    // treeの状態をセット
491    setTreeStatus(treeStatusHidden);
492    // submit
493    eccube.setModeAndSubmit(modeHidden,'','');
494}
495
496// 閲覧ブラウザ取得
497function fnGetMyBrowser() {
498    myOP = window.opera;            // OP
499    myN6 = document.getElementById; // N6
500    myIE = document.all;            // IE
501    myN4 = document.layers;         // N4
502    if      (myOP) myBR="O6";       // OP6以上
503    else if (myIE) myBR="I4";       // IE4以上
504    else if (myN6) myBR="N6";       // NS6以上
505    else if (myN4) myBR="N4";       // NN4
506    else           myBR="";         // その他
507
508    return myBR;
509}
510
511// imgタグの画像変更
512function fnChgImg(fileName,imgName){
513    $("#" + imgName).attr("src", fileName);
514}
515
516// ファイル選択
517function fnSelectFile(id, val) {
518    old_select_id = id;
519}
Note: See TracBrowser for help on using the repository browser.