[トップ] [掲示板] [F.A.Q.] [コラム] [ひとりごと] [利用規約] [履歴] | |
会議室予約 |
フレームを使って、予約する日を選ぶカレンダー部(左)と、当日の予約状況を確認する予約表部(右)を同時に見られる会議室予約システム。カレンダー部で予約したい日をクリックすると、予約表部がその日の情報に切り替わります。
カレンダー部も、予約表部も、自動的に日付がインクリメントされますし、古くなった予約情報は自動的に削除されますので、一度CGIを設置するとその後のメンテナンスは必要ありません。
イントラネットでどうぞ。
まず、下のファイルをダウンロードして、解凍します。解凍すると、"resroom.cgi"、"kabalib.pl"の2つのテキスト・ファイルと、"room.gif"、"date.gif"、"key.gif"、"cancel.gif"の4つのGIFファイルができます。
※kabalib.plはVer.1.20以降を使ってください。
cgi-lib.plを入手します。
http://cgi-lib.berkeley.edu/
jcode.plを入手します。
ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
"resroom.cgi"をテキスト・エディタで編集します。
※"resroom.cgi"はEUCで書いてありますので、EUCが扱えるエディタでないと日本語部分が読めません。
最低限、次の個所を変更する必要があります。
ftpソフトなどでサーバーのCGI用ディレクトリにアップロードしましょう。仮にcgi-bin/にアップロードしたら、次のようにディレクトリとパーミッションを設定します。
※kabalib.plはresroom/の下でもOKです。
※jcode.plとcgi-lib.plはCGIスクリプトではしょっちゅう参照される定番なので、lib/ディレクトリとして独立させておくと使いまわせて便利です。
cgi-bin/ ├-- lib/ | ├-- jcode.pl | ├-- cgi-lib.pl | └-- kabalib.pl └-- resroom (755)/ ├-- data (777)/ ├-- resroom.cgi (755) └-- *.gif
設定が終わったら、ブラウザからCGIを設置したURLを開いてみましょう。上の例のようなディレクトリ構成なら、次のようなURLになります。
http://xxx.yyy.zzz/cgi-bin/resroom/resroom.cgi
"resroom.cgi"の「設定、適当に変更してください」〜「設定はここまで」の間を適当に変更すると、見た目をカスタマイズできます。
表の列数に応じて、表の幅を変更できます。$twidthにピクセル数で指定してください。
#予約状況表のセル幅(ピクセル)
$twidth = 60;
下にある色は好きなように変更できます。
#色指定 $calbg = '#FFFFFF'; #カレンダー部の背景色(白) $tblbg = '#F5F5F5'; #予約状況表の背景色(ホワイトスモーク) $listbg = '#CCFFCC'; #一覧表示画面の背景色(薄いグリーン) $msgbg = '#FFFFE0'; #メッセージ画面の背景色(ライトイエロー) $tblhead = '#99CC99'; #予約状況表のヘッダーの色(グリーン) $tbltime = '#CCFFCC'; #予約状況表の時間セルの色(薄いグリーン) $sun = '#FFCCFF'; #日曜日の色(ピンク) $sat = '#CCFFFF'; #土曜日の色(水色) $alart = '#FF0000'; #警告メッセージ(赤) $schbg = '#FFFFFF'; #予約状況表の背景色(白) #予約部分の色候補、1日に複数の予約があればこの中からランダムに選んで色分け @colors = ( '#E0EECC', '#CCFFEE', '#99ECCC', '#FFFF99', '#CCCCFF', '#FFCC99' );
$remainを1にしておくと、過去ログを残すことができます。$remLimitは記録を残しておく日数で、0の場合は記録を一切消しません。サーバー側にファイルがあふれないように適当な期限を付けておくことを推奨します。
$remain = 1; #過去の記録を残すときは1、要らないときは0。 $remLimit = 100; #記録を残す日数。0なら全然消さない。
部屋別一覧を開くボタン、日付別一覧を開くボタン、キーのアイコンの画像ファイルを変更できます。
$dateImg = "date.gif"; #日付別一覧を開くためのボタン $roomImg = "room.gif"; #部屋別一覧を開くためのボタン $keyImg = "key.gif"; #キーがついた予約を示すアイコン $cancelImg = "cancel.gif"; #一発キャンセル・ボタン
マスターキー機能は、予約時に設定したキーを忘れてしまったときなどに、管理者によって強制的に予約をキャンセルできる機能です。管理者以外に推測されないような文字列を設定しましょう。
#マスターキー(Ver.1.41〜) 不要なら''かコメントアウト。 $mentKey = '0123';
データ・ファイルを保存するディレクトリは、初期値では"data"になっていますが、このディレクトリはパーミッション777のセキュリティー的に弱い部分なので、他の人に推測されにくい名前にすることをお勧めします。何かとんでもない名前を考えて一人で楽しんではどうでしょうか?
データ・ファイル用ディレクトリ名を変更するには、"resroom.cgi"の$dirの部分と、実際のディレクトリ名を変更してください。下は、"data"を"monooki"に変更した例です。
[resroom.cgiファイル]
[ディレクトリ構成]
cgi-bin/ ├-- lib/ | ├-- jcode.pl | ├-- cgi-lib.pl | └-- kabalib.pl └-- resroom (755)/ ├-- monooki (777)/ ├-- resroom.cgi (755) └-- *.gif
この「会議室予約」が職場で日の目を見なかった理由は、結局Outlookが採用されたからです。Outlookはマイクロソフトの有償ソフトですから、そりゃあ高機能でかっこイイです。メーラー、予定表、会議通知までは大変結構ですが、リソース予約となると操作が難しくて私にはお手上げ。毎日パソコンやワークステーションとにらめっこの私に使えないのですから、会議室を自分で予約できない管理職は大勢いることでしょう。管理職は部下に頼めばいいけれど、私はマジに困ってます。
後日談(2002.8.31)
その後、Outlookでリソース予約できるようになりました。ポイントは「人も、モノも、部屋もいっしょくた」ですね。人とモノを区別するからOutlookのリソース予約が理解できなかったのでした。そう言えば、英語ではモノをHeとかSheと言ったりしますね。英語圏の製品だし、その辺の文化の違いかなー、でも何だか違和感が残ります。
とにかく目下の天敵はLotus Notesだ。これがまた何とも難物なんだよな...
この「会議室予約」はわずかな修正で色々な用途に使えます。予約するのを備品にすれば「備品予約」、書き込む内容を変えれば「スケジューラ」になります。もっと改造すれば「時間割」とか「進捗管理」にも使えるかも知れません。このような用途をCGIで実現するメリットは、クライアントがWindowsでも、UNIXでも、試したことはないけど多分MACでも、同じように使えて、しかもタダという点ですね。ハードの種類が多い職場にお勧めです。
2003/1/28 | Ver.1.41p | kabalib.plの重大なバグを修正。(Ver.1.20) |
2002/11/20 | Ver.1.41 | Netscape6で一発キャンセルが効かないバグを修正。 マスターキー機能追加。 |
2002/8/31 | Ver.1.40 | 予約内容変更機能を改め、一発キャンセル機能に改造。 |
2002/8/16 | Ver.1.30 | 部屋毎・日付毎の一覧機能と予約内容変更機能を追加。 |
2002/6/2 | Ver.1.20 | 過去ログ機能を追加。 |
2002/5/30 | Ver.1.03 | キャンセル時に同じエラーメッセージがダブる問題を修正。 |
2002/4/5 | Ver.1.02 | JavaScriptで引数をチェックできるように改造。 |
2001/5/5 | Ver.1.01 | コードをシェイプしました。 |
2001/3/19 | Ver.1.00 | ログの出力をdisable可能にし、設定部を独立させました。 |
2000/12/12 | Ver.0.02 | 「何時まで」の解釈を変更。 |
2000/12/11 | Ver.0.01 | つくりました。 |