source: branches/version-2_13_0/html/user_data/packages/admin/js/eccube.admin.js @ 23104

Revision 23104, 17.0 KB checked in by h_yoshimoto, 11 years ago (diff)

#2348 r23077 - r23081 をマージ

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
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// ページ読み込み時の処理
304$(function(){
305// ヘッダナビゲーション
306    $("#navi li").hover(
307        function(){
308            $(this).addClass("sfhover");
309        },
310        function(){
311            $(this).removeClass("sfhover");
312        }
313    );
314});
315//制限数判定
316function 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 = "";
324        } else {
325            eccube.changeDisabled(list, '');
326        }
327    }
328}
329
330(function($) {
331    /**
332     * パンくず
333     */
334    var o;
335
336    $.fn.breadcrumbs = function(options) {
337        var defaults = {
338            bread_crumbs: '',
339            start_node: '<span>ホーム</span>',
340            anchor_node: '<a onclick="eccube.setModeAndSubmit(\'tree\', \'parent_category_id\', '
341                + '{category_id}); return false" href="javascript:;" />',
342            delimiter_node: '<span>&nbsp;&gt;&nbsp;</span>'
343        };
344
345        return this.each(function() {
346            if (options) {
347                o = $.fn.extend(defaults, options);
348            }
349            var $this = $(this);
350            var total = o.bread_crumbs.length;
351            var $node = $(o.start_node);
352
353            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);
359                $(anchor)
360                    .text(o.bread_crumbs[i].category_name)
361                    .appendTo($node);
362
363                if (i > 0) $node.append(o.delimiter_node);
364            }
365            $this.html($node);
366            return this;
367        });
368    };
369})(jQuery);
370
371/**
372 * ファイル管理
373 */
374var tree = "";                      // 生成HTML格納
375var count = 0;                      // ループカウンタ
376var arrTreeStatus = [];             // ツリー状態保持
377var old_select_id = '';             // 前回選択していたファイル
378var selectFileHidden = "";          // 選択したファイルのhidden名
379var treeStatusHidden = "";          // ツリー状態保存用のhidden名
380var modeHidden = "";                // modeセットhidden名
381
382// ツリー表示
383function 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にセット
460function 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状態を削除する(閉じる状態へ)
470function fnDelTreeStatus(path) {
471    for(i=0; i < arrTreeStatus.length ;i++) {
472        if(arrTreeStatus[i] == path) {
473            arrTreeStatus[i] = "";
474        }
475    }
476}
477// ツリー描画
478function 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// 階層ツリーメニュー表示・非表示処理
502function 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// ファイルリストダブルクリック処理
519function 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// フォルダオープン処理
540function fnFolderOpen(path) {
541    // クリックしたフォルダ情報を保持
542    document.form1[selectFileHidden].value = path;
543    // treeの状態をセット
544    setTreeStatus(treeStatusHidden);
545    // submit
546    eccube.setModeAndSubmit(modeHidden,'','');
547}
548
549// 閲覧ブラウザ取得
550function 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タグの画像変更
565function fnChgImg(fileName,imgName){
566    $("#" + imgName).attr("src", fileName);
567}
568
569// ファイル選択
570function fnSelectFile(id, val) {
571    old_select_id = id;
572}
Note: See TracBrowser for help on using the repository browser.