source: branches/comu-ver2/html/user_data/packages/default/js/admin.js @ 17605

Revision 17605, 11.1 KB checked in by Seasoft, 16 years ago (diff)

/index.php にリンクやリダイレクトしている箇所の「index.php」を定数化。

  • 定数「DIR_INDEX_FILE」… DirectoryIndex? の実ファイル名。現状の EC-CUBE は、「index.php」。/html/define.php で定義するが、定義が無い場合 SC_Initial::defineDirectoryIndex() で「index.php」と定義。本来は、プログラム中で実ファイルとしての index.php を指すときとは、この定数を使うのが良い気がするが、今回はそこまでは書き換えていない。
  • 定数「USE_FILENAME_DIR_INDEX」… DIR_INDEX_FILE にアクセスするときにファイル名を使用するか。/html/define.php で定義。
  • 定数「DIR_INDEX_URL」… /index.php にリンクやリダイレクトしている箇所の「index.php」部分を示す。この定数は SC_Initial::defineDirectoryIndex() で自動生成する。

・$_SERVERPHP_SELF? や自身をあらわすファイル名を利用している箇所を文字列「?」に書き換え。これにより、/ が自己URLにリンクするときに /index.php となることを防ぐ。RFC3986 を参考にする。モバイル端末がこのRFCに準拠しているのか確信が無いので、モバイルではこの変更は見送った。
・従来 / にリンクしていた箇所に、定数「DIR_INDEX_URL」を付加。漏れがあると予測される。

Line 
1/*
2 * This file is part of EC-CUBE
3 *
4 * Copyright(c) 2000-2007 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// 管理者メンバーを追加する。
23function fnRegistMember() {
24    // 必須項目の名前、ログインID、パスワード、権限
25    var lstitem = new Array();
26    lstitem[0] = 'name';
27    lstitem[1] = 'login_id';
28    lstitem[2] = 'password';
29    lstitem[3] = 'authority';
30
31    var max = lstitem.length;
32    var errflg = false;
33    var cnt = 0;
34
35    // 必須項目のチェック
36    for(cnt = 0; cnt < max; cnt++) {
37        if(document.form1[lstitem[cnt]].value == "") {
38            errflg = true;
39            break;
40        }
41    }
42
43    // 必須項目が入力されていない場合
44    if(errflg == true) {
45        alert('必須項目を入力して下さい。');
46        return false;
47    } else {
48        if(window.confirm('内容を登録しても宜しいでしょうか')){
49            return true;
50        } else {
51            return false;
52        }
53    }
54}
55
56//親ウィンドウのページを変更する。
57function fnUpdateParent(url) {
58    // 親ウィンドウの存在確認
59    if(fnIsopener()) {
60        window.opener.location.href = url;
61    } else {
62        window.close();
63    }
64}
65
66// 親ウィンドウをポストさせる。
67function fnSubmitParent() {
68    // 親ウィンドウの存在確認
69    if(fnIsopener()) {
70        window.opener.document.form1.submit();
71    } else {
72        window.close();
73    }
74}
75
76//指定されたidの削除を行うページを実行する。
77function fnDeleteMember(id, pageno) {
78    url = "./delete.php?id=" + id + "&pageno=" + pageno;
79    if(window.confirm('登録内容を削除しても宜しいでしょうか')){
80        location.href = url;
81    }
82}
83
84// ラジオボタンチェック状態を保存
85var lstsave = "";
86
87// ラジオボタンのチェック状態を取得する。
88function fnGetRadioChecked() {
89    var max;
90    var cnt;
91    var names = "";
92    var startname = "";
93    var ret;
94    max = document.form1.elements.length;
95    lstsave = Array(max);
96    for(cnt = 0; cnt < max; cnt++) {
97        if(document.form1.elements[cnt].type == 'radio') {
98            name = document.form1.elements[cnt].name;
99            /* radioボタンは同じ名前が2回続けて検出されるので、
100               最初の名前の検出であるかどうかの判定 */
101            // 1回目の検出
102            if(startname != name) {
103                startname = name;
104                ret = document.form1.elements[cnt].checked;
105                if(ret == true){
106                    // 稼働がチェックされている。
107                    lstsave[name] = 1;
108                }
109            // 2回目の検出
110            } else {
111                ret = document.form1.elements[cnt].checked;
112                if(ret == true){
113                    // 非稼働がチェックされている。
114                    lstsave[name] = 0;
115                }
116            }
117        }
118    }
119}
120
121// ラジオボタンに変更があったか判定する。
122function fnChangeRadio(name, no, id, pageno) {
123    // 最初の取得状態から変更ありの場合
124    if(lstsave[name] != no) {
125        // DB反映ページ実行
126        url = "./check.php?id=" + id + "&no=" + no + "&pageno=" + pageno;
127        location.href = url;
128    }
129}
130
131// 管理者メンバーページの切替
132function fnMemberPage(pageno) {
133    location.href = "?pageno=" + pageno;
134}
135
136// ページナビで使用する
137function fnNaviSearchPage(pageno, mode) {
138    document.form1['search_pageno'].value = pageno;
139    document.form1['mode'].value = mode;
140    document.form1.submit();
141}
142
143// ページナビで使用する(mode = search専用)
144function fnNaviSearchOnlyPage(pageno) {
145    document.form1['search_pageno'].value = pageno;
146    document.form1['mode'].value = 'search';
147    document.form1.submit();
148}
149
150// ページナビで使用する(form2)
151function fnNaviSearchPage2(pageno) {
152    document.form2['search_pageno'].value = pageno;
153    document.form2['mode'].value = 'search';
154    document.form2.submit();
155}
156
157// 値を代入して指定ページにsubmit
158function fnSetvalAndSubmit( fname, key, val ) {
159    fm = document[fname];
160    fm[key].value = val;
161    fm.submit();
162}
163
164// 項目に入った値をクリアする。
165function fnClearText(name) {
166    document.form1[name].value = "";
167}
168
169// カテゴリの追加
170function fnAddCat(cat_id) {
171    if(window.confirm('カテゴリを登録しても宜しいでしょうか')){
172        document.form1['mode'].value = 'edit';
173        document.form1['cat_id'].value = cat_id;
174    }
175}
176
177// カテゴリの編集
178function fnEditCat(parent_id, cat_id) {
179    document.form1['mode'].value = 'pre_edit';
180    document.form1['parent_id'].value = parent_id;
181    document.form1['edit_cat_id'].value = cat_id;
182    document.form1.submit();
183}
184
185// 選択カテゴリのチェック
186function fnCheckCat(obj) {
187    val = obj[obj.selectedIndex].value;
188    if (val == ""){
189        alert ("親カテゴリは選択できません");
190        obj.selectedIndex = 0;
191    }
192}
193
194// 確認ページから登録ページへ戻る
195function fnReturnPage() {
196    document.form1['mode'].value = 'return';
197    document.form1.submit();
198}
199
200// 規格分類登録へ移動
201function fnClassCatPage(class_id) {
202    location.href =  "./classcategory.php?class_id=" + class_id;
203}
204
205function fnSetFormValue(name, val) {
206    document.form1[name].value = val;
207}
208
209function fnListCheck(list) {
210    len = list.length;
211    for(cnt = 0; cnt < len; cnt++) {
212        document.form1[list[cnt]].checked = true;
213    }
214}
215
216function fnAllCheck() {
217    cnt = 1;
218    name = "check:" + cnt;
219    while (document.form1[name]) {
220        document.form1[name].checked = true;
221        cnt++;
222        name = "check:" + cnt;
223    }
224}
225
226function fnAllUnCheck() {
227    cnt = 1;
228    name = "check:" + cnt;
229    while (document.form1[name]) {
230        document.form1[name].checked = false;
231        cnt++;
232        name = "check:" + cnt;
233    }
234}
235
236//指定されたidの削除を行うページを実行する。
237function fnDelete(url) {
238    if(window.confirm('登録内容を削除しても宜しいでしょうか')){
239        location.href = url;
240        return false;
241    }
242}
243
244//配送料金を自動入力
245function fnSetDelivFee(max) {
246    for(cnt = 1; cnt <= max; cnt++) {
247        name = "fee" + cnt;
248        document.form1[name].value = document.form1['fee_all'].value;
249    }
250}
251
252// 在庫数制限判定
253function fnCheckStockLimit(icolor) {
254    if(document.form1['stock_unlimited']) {
255        list = new Array(
256            'stock'
257            );
258        if(document.form1['stock_unlimited'].checked) {
259            fnChangeDisabled(list, icolor);
260            document.form1['stock'].value = "";
261        } else {
262            fnChangeDisabled(list, '');
263        }
264    }
265}
266
267// 在庫数制限判定
268function fnCheckStockNoLimit(no, icolor) {
269    $check_key = "stock_unlimited:"+no;
270    $input_key = "stock:"+no;
271
272    list = new Array($input_key );
273    if(document.form1[$check_key].checked) {
274        fnChangeDisabled(list, icolor);
275        document.form1[$input_key].value = "";
276    } else {
277        fnChangeDisabled(list, '');
278    }
279}
280
281// 購入制限数判定
282function fnCheckSaleLimit(icolor) {
283    list = new Array(
284        'sale_limit'
285        );
286    if(document.form1['sale_unlimited'].checked) {
287        fnChangeDisabled(list, icolor);
288        document.form1['sale_limit'].value = "";
289    } else {
290        fnChangeDisabled(list, '');
291    }
292}
293
294// 在庫数判定
295function fnCheckAllStockLimit(max, icolor) {
296    for(no = 1; no <= max; no++) {
297        $check_key = "stock_unlimited:"+no;
298        $input_key = "stock:"+no;
299
300        list = new Array($input_key);
301
302        if(document.form1[$check_key].checked) {
303            fnChangeDisabled(list, icolor);
304            document.form1[$input_key].value = "";
305        } else {
306            fnChangeDisabled(list, '');
307        }
308    }
309}
310
311// Form指定のSubmit
312function fnFormSubmit(form) {
313    document.forms[form].submit();
314}
315
316// 確認メッセージ
317function fnConfirm() {
318    if(window.confirm('この内容で登録しても宜しいでしょうか')){
319        return true;
320    }
321    return false;
322}
323
324//削除確認メッセージ
325function fnDeleteConfirm() {
326    if(window.confirm('削除しても宜しいでしょうか')){
327        return true;
328    }
329    return false;
330}
331
332//メルマガ形式変更確認メッセージ
333function fnmerumagaupdateConfirm() {
334    if(window.confirm("既に登録されているメールアドレスです。\nメルマガの種類が変更されます。宜しいですか?")){
335        return true;
336    }
337    return false;
338}
339
340// フォームに代入してからサブミットする。
341function fnInsertValAndSubmit( fm, ele, val, msg ){
342
343    if ( msg ){
344        ret = window.confirm(msg);
345    } else {
346        ret = true;
347    }
348    if( ret ){
349        fm[ele].value = val;
350        fm.submit();
351        return false;
352    }
353    return false;
354}
355
356// 自分以外の要素を有効・無効にする
357function fnSetDisabled ( f_name, e_name, flag ) {
358    fm = document[f_name];
359
360    // 必須項目のチェック
361    for(cnt = 0; cnt < fm.elements.length; cnt++) {
362        if( fm[cnt].name != e_name && fm[cnt].name != 'subm' && fm[cnt].name != 'mode') {
363            fm[cnt].disabled = flag;
364            if ( flag == true ){
365                fm[cnt].style.backgroundColor = "#cccccc";
366            } else {
367                fm[cnt].style.backgroundColor = "#ffffff";
368            }
369        }
370    }
371}
372
373
374//リストボックス内の項目を移動する
375function fnMoveCat(sel1, sel2, mode_name) {
376    var fm = document.form1;
377    for(i = 0; i < fm[sel1].length; i++) {
378        if(fm[sel1].options[i].selected) {
379            if(fm[sel2].value != "") {
380                fm[sel2].value += "-" + fm[sel1].options[i].value;
381            } else {
382                fm[sel2].value = fm[sel1].options[i].value;
383            }
384        }
385    }
386    fm["mode"].value = mode_name;
387    fm.submit();
388}
389
390//リストボックス内の項目を削除する
391function fnDelListContents(sel1, sel2, mode_name) {
392    fm = document.form1;
393    for(j = 0; j < fm[sel1].length; j++) {
394        if(fm[sel1].options[i].selected) {
395            fm[sel2].value = fm[sel2].value.replace(fm[sel1].options[i].value, "");
396        }
397    }
398
399    fm["mode"].value = mode_name;
400    fm.submit();
401}
402
403//一行目の価格を以下の行にコピーする
404function fnCopyValue(length, icolor) {
405    fm = document.form1;
406    for(i = 1; i <= length; i++) {
407        fm['product_code:' + i].value = fm['product_code:1'].value;
408        fm['stock:' + i].value = fm['stock:1'].value;
409        fm['price01:' + i].value = fm['price01:1'].value;
410        fm['price02:' + i].value = fm['price02:1'].value;
411        fm['stock_unlimited:' + i].checked = fm['stock_unlimited:1'].checked;
412        fm['stock:' + i].disabled = fm['stock:1'].disabled;
413        fm['stock:' + i].style.backgroundColor = fm['stock:1'].style.backgroundColor;
414    }
415}
416
417// タグの表示非表示切り替え
418function fnDispChange(disp_id, inner_id, disp_flg){
419    disp_state = document.getElementById(disp_id).style.display;
420
421    if (disp_state == "") {
422        document.form1[disp_flg].value="none";
423        document.getElementById(disp_id).style.display="none";
424        document.getElementById(inner_id).innerHTML = '<FONT Color="#FFFF99"> << 表示 </FONT>';
425    }else{
426        document.form1[disp_flg].value="";
427        document.getElementById(disp_id).style.display="";
428        document.getElementById(inner_id).innerHTML = ' <FONT Color="#FFFF99"> >> 非表示 </FONT>';
429    }
430}
431
432// ページ読み込み時の処理
433$(function(){
434// ヘッダナビゲーション
435    $("#navi > li").hover(
436        function(){
437            $(this).addClass("sfhover");
438        },
439        function(){
440            $(this).removeClass("sfhover");
441        }
442    );
443});
Note: See TracBrowser for help on using the repository browser.