かばの遊べるCGI ロゴ [トップ] [掲示板] [F.A.Q.] [コラム] [ひとりごと] [利用規約] [履歴]
週間会議室予約

■特徴

フレームを使って、予約する日を選ぶカレンダー部(左)と、1週間分の予約状況を確認する予約表部(右)を同時に見られる会議室予約システム。カレンダー部で予約したい日をクリックすると、予約表部がその週の情報に切り替わります。
カレンダー部も、予約表部も、自動的に日付がインクリメントされますし、古くなった予約情報は自動的に削除されますので、一度CGIを設置するとその後のメンテナンスは必要ありません。
イントラネットでどうぞ。

ruleご利用にあたって sample見本


■設置方法

(1) ダウンロード

まず、下のファイルをダウンロードして、解凍します。解凍すると、"resweek.cgi"、"kabalib.pl"の2つのテキスト・ファイルと、"date.gif"、"key.gif"、"cancel.gif"の3つのGIFファイルができます。

※kabalib.plはVer.1.20以降を使ってください。

downloadファイルをダウンロード

cgi-lib.plを入手します。

http://cgi-lib.berkeley.edu/

jcode.plを入手します。

ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/

(2) カスタマイズ

"resweek.cgi"をテキスト・エディタで編集します。
※"resweek.cgi"はEUCで書いてありますので、EUCが扱えるエディタでないと読めません。

最低限、次の個所を変更する必要があります。

#!/usr/local/bin/perl
perlへのパス
$htmpath = 'resweek.html';
[もどる]ボタンでジャンプするパス。
use lib '../lib';
resweek.cgiから見て、cgi-lib.pl、jcode.pl、kabalib.plがあるパス。
@cells = ('9:00','9:30','10:00', ... );
予約できる時間帯。デフォルトは30分毎ですが、変更可能です。

(3) アップロード&設定

ftpソフトなどでサーバーのCGI用ディレクトリにアップロードしましょう。仮にcgi-bin/にアップロードしたら、次のようにディレクトリとパーミッションを設定します。
※kabalib.plはresweek/の下でもOKです。
※jcode.plとcgi-lib.plはCGIスクリプトではしょっちゅう参照される定番なので、lib/ディレクトリとして独立させておくと使いまわせて便利です。

cgi-bin/
    ├-- lib/
    |    ├-- jcode.pl
    |    ├-- cgi-lib.pl
    |    └-- kabalib.pl
    └-- resweek (755)/
          ├-- data (777)/
          ├-- resweek.cgi (755)
          └-- *.gif

(4) テスト

設定が終わったら、ブラウザからCGIを設置したURLを開いてみましょう。上の例のようなディレクトリ構成なら、次のようなURLになります。

http://xxx.yyy.zzz/cgi-bin/resweek/resweek.cgi


■もっとカスタマイズ

"resweek.cgi"の「設定、適当に変更してください」〜「設定はここまで」の間を適当に変更すると、見た目をカスタマイズできます。

(1)土日と祭日の扱いを指定しよう

土曜日を表示するか? 日曜日を表示するか? 祭日の予約を受け付けるか? を設定できます。土曜または日曜を非表示にすると、予約状況表にその曜日の列が出ないし、カレンダーにはリンクがつかなくなります。祭日の予約をブロックすると、予約状況表のセレクトメニューに出ないし、カレンダーのリンクがなくなります。

$enSunday = 0;    #日曜日を表示するなら1、表示しないときは0。
$enSaturday = 0;  #土曜日を表示するなら1、表示しないときは0。
$enHoliday = 0;   #祝日の予約をブロックするなら0、受け付けるなら1。

(2)パスワードをつけよう

パスワードをつけておくと、パスワードが一致しないと予約・キャンセル共できなくなります。予約できるメンバーを限定したいときにお使いください。

$pass = '0123';   #書込み用のパスワード。不要ならコメントアウト。

(3)表の幅を変えよう

表の幅を変更できます。$twidthにピクセル数で指定してください。

#予約状況表のセル幅(ピクセル)
$twidth = 70;

(4)色を変えよう

下にある色は好きなように変更できます。

#色指定
$calbg    = '#FFFFFF'; #カレンダー部の背景色(白)
$tblbg    = '#F5F5F5'; #予約状況フレームの背景色(ホワイトスモーク)
$tblbgt   = '#FFFFFF'; #予約状況表の背景色(白)
$listbg   = '#CCFFCC'; #一覧表示画面の背景色(薄いグリーン)
$msgbg    = '#FFFFE0'; #メッセージ画面の背景色(ライトイエロー)
$tblhead  = '#99CC99'; #予約状況表のヘッダーの色(グリーン)
$tbltime  = '#CCFFCC'; #予約状況表の時間セルの色(薄いグリーン)
$sun      = '#FFCCFF'; #日曜日と休日の色(ピンク)
$sat      = '#CCFFFF'; #土曜日の色(水色)
$hei      = '#FFFFF0'; #平日の色(ベージュ)
$sai      = '#FFF0F5'; #受け付けしない祭日の色(薄いラベンダー)
$alart    = '#FF0000'; #警告メッセージ(赤)
$schbg    = '#FFFFFF'; #予約状況表の背景色(白)
#予約部分の色候補、1日に複数の予約があればこの中からランダムに選んで色分け
@colors = ( '#E0EECC', '#CCFFEE', '#99ECCC', '#FFFF99', '#CCCCFF', '#FFCC99' );

(5)過去ログを残そう

$remainを1にしておくと、過去ログを残すことができます。$remLimitは記録を残しておく日数で、0の場合は記録を一切消しません。サーバー側にファイルがあふれないように適当な期限を付けておくことを推奨します。

$remain = 1;                #過去の記録を残すときは1、要らないときは0。
$remLimit = 100;            #記録を残す日数。0なら全然消さない。

(6)アイコンを変えよう

日付別一覧を開くボタン、キーのアイコン、一発キャンセル・ボタンの画像ファイルは変更できます。

$dateImg = "date.gif";      #日付別一覧を開くためのボタン
$keyImg = "key.gif";        #キーがついた予約を示すアイコン
$cancelImg = "cancel.gif";  #一発キャンセル・ボタン

■ちょこっとセキュア

データ・ファイルを保存するディレクトリは、初期値では"data"になっていますが、このディレクトリはパーミッション777のセキュリティー的に弱い部分なので、他の人に推測されにくい名前にすることをお勧めします。何かとんでもない名前を考えて一人で楽しんではどうでしょうか?
データ・ファイル用ディレクトリ名を変更するには、"resweek.cgi"の$dirの部分と、実際のディレクトリ名を変更してください。下は、"data"を"monooki"に変更した例です。

[resweek.cgiファイル]

$dir = 'monooki';
データ・ファイル用ディレクトリ名

[ディレクトリ構成]

cgi-bin/
    ├-- lib/
    |    ├-- jcode.pl
    |    ├-- cgi-lib.pl
    |    └-- kabalib.pl
    └-- resweek (755)/
          ├-- monooki (777)/
          ├-- resweek.cgi (755)
          └-- *.gif

■つけたり

ハッピーマンデー法と春分・秋分

今回初めてカレンダー・日付処理に祭日の処理を加えました。実は、最初に「会議室予約」を作ったとき、日曜だけでなく祭日も赤く色分けしようと思ったのですが、丁度その頃できたハッピーマンデー法のせいでやめたイキサツがあります。毎年○月○日と決まっていればif分1つで祭日が判断できますが、1月の第2月曜とか言われたら、割り算して、繰上げして... ああもう面倒じゃないですか?
でも「週間会議室予約」を作り始めて、土曜日や日曜日を非表示にしたりするうち、「土日だけ考慮して祭日無視なんて、頭隠して尻隠さずだよなー」と思い祭日処理サブルーチンを作り始めました。そうしたら、ハッピーマンデー以上に厄介な祭日があるじゃありませんか。春分の日と、秋分の日が、年によって微妙に違うってお気づきでしたか?
何でも、天文学上の春分と秋分は(昼と夜の長さが同じ日)は年によって違うんだそうです。それを踏まえて前年の2月に閣議でカレンダー上の「春分の日」と「秋分の日」が決まります。人間が相談して決めることを事前にコーディングできるわけないですよね。
そんな訳で、resweek.cgiに入れた祭日処理上の春分と秋分は、天文学上の春分と秋分です。だから、閣議で決まったカレンダーとCGIの祭日がずれる事がそのうちあるかも知れません。そんときは不可抗力ということで、ご勘弁願います。


■履歴

2003/1/28 Ver.1.00p kabalib.plの重大なバグを修正。(Ver.1.20)
2002/11/05 Ver.1.00 「会議室予約」Ver.1.40を基につくりました。


[トップへ] [掲示板] [F.A.Q.] [コラム] [ひとりごと] [利用規約] [履歴]