Reservation Calender Light(ベータ版)

CGI

サンプルダウンロード構成ファイル設置方法設定方法表示設定管理表セキュリティご注意

 予約状況等の告知用カレンダーです。リンクボタンになった日をクリックするとフォーム等指定のページにジャンプします。工夫次第でいろいろな目的に利用できるかと思います。
 特徴は更新方法です。管理はローカル環境のエクセル等で行い、それをCSVファイルに書き出してサーバに送信します。送信するだけで表示が更新されます。日常的な更新作業はこれだけでOKです。もっとも、この仕組みがアダになる可能性もあります。詳しくはセキュリティの項を参照してください。
 各種設定等は管理画面で行いますが、最初に一度行えばほとんど変更する必要はありません。
 表示ページはテンプレートを利用する方式なので、HTMLでの自由なページデザインが可能です。

お知らせ
 2016.1.1
2016年施行の「山の日(8/11)」を含む2025年までの休日データを追加しました。

【使用方法】
解凍すると「holiday.txt」になります。管理ページの「ファイルのアップロード」でアップロードできます。ディレクトリは「rcalender」の中の「data」です。ファイル名を変更(推奨)している場合には、使用中のファイル名に変更してください。

ZIP形式:rcalel_holiday_16-25.zip(2KB)

※一部のブラウザではダウンロードファイル名が異なる場合がありますが、そのまま解凍すれば問題ありません。
 2013.8.20
特定のアクセスにより環境設定の設定内容が消える不具合がありましたので、修正しました。この修正ファイルと、2020年まで使える休日データファイルを含むダウンロードセット「rcalenderl_062b」を公開しました。
アップデートするには、「admin.cgi」を同梱ファイルと入れ替えてください。
 2012.12.24
2020年まで使える休日データを追加しました。

【使用方法】
解凍すると「holiday.txt」になります。管理ページの「ファイルのアップロード」でアップロードできます。ディレクトリは「rcalender」の中の「data」です。ファイル名を変更(推奨)している場合には、使用中のファイル名に変更してください。

ZIP形式:rcalel_holiday_12-20.zip(2KB)

※一部のブラウザではダウンロードファイル名が異なる場合がありますが、そのまま解凍すれば問題ありません。
 2011.3.26
再び、閏年を含む表示の際に不具合が見つかりました。前回の修正時に勘違いをしていたようです。これを修正したバージョン0.6ベータを公開しました。
旧バージョンのアップデートは、「rcalel.cgi」「library.pl」の二つのファイルを新しいバージョンのものと入れ替えてください。データには影響しません。
休日データファイルも2015年まで使える新しいものを同梱しています。
 2008.4.25
閏年から通常年に続く表示に、閏年の設定が持ち越されてしまう不具合がありました(例:2008年12月〜2009年2月の表示の場合、2009年2月も29日になる)。これを修正したバージョン0.5ベータを公開しました。
旧バージョンのアップデートは、スクリプト本体「rcalel.cgi」を新しいバージョンのものと入れ替えるだけでOKです。
休日データファイルも新しいものを同梱しています。
サンプル
カレンダー表示、アップロード画面、管理画面をご覧になれます。
ダウンロード
環境に応じて以下よりダウンロードしてください(Norton AntiVirusにてウイルスチェック済)。最新バージョンは0.6ベータ。

SIT形式:rcalenderl_062b.sitx(49KB)
LHA形式:rcalenderl_062b.lzh(53KB)
ZIP形式:rcalenderl_062b.zip(62KB)

※Mac版IE等一部のブラウザではダウンロードファイル名が異なる場合がありますが、そのまま解凍すれば問題ありません。
構成ファイル
解凍すると、以下のグリーンの文字の構成ファイルになります。
  • rcaleder……スクリプトフォルダ
    • rcalel.cgi……スクリプト本体
    • admin.cgi……環境設定用スクリプト
    • uploader.cgi……アップロード用スクリプト
    • config.pl……設定内容の保存ファイル
    • library.pl……ライブラリ
    • cgi-lib.pl……ライブラリ
    • data……データ用フォルダ
      • holiday.txt……休日データ
      • temp.html……表示用テンプレート
  • kanri_data.xls……管理表用エクセルファイル(ローカル用)
  • readme.html……解説ファイル(アップロードは不要)
  • sample_c1.gif……解説内の画像ファイル(アップロードは不要)
  • form.html……フォーム用HTMLファイル(参考)
「cgi-lib.pl」はhttp://cgi-lib.berkeley.edu/からダウンロードできます。
構成例(参考)

public_html / …… ホームディレクトリ
      |-- index.html …… トップページ
      |
      |- (cgi-bin /) rcalender / …… rcalenderディレクトリ
      |                |-- rcalel.cgi(755)
      |                |-- admin.cgi(755)
      |                |-- uploader.cgi(755)
      |                |-- config.pl(666)
      |                |-- library.pl(644)
      |                |-- cgi-lib.pl(644)
      |                |-- data /(777)
      |                     |-- holiday.txt(666) …… 休日データ
      |                     |-- temp.html(666) …… 表示用テンプレート。自由に編集可能
      |                     |-- kanri_data.csv(666) …… 日常的に送信する予約データファイル
      |
      |-- form.html …… 予約等のフォーム(任意に作成、どこに置いても可)

  • スクリプトは、cgi-binに限定されている場合はcgi-binに、それ以外はどこに置いてもかまいません。 カレンダーは常にCGIで表示しますので、cgi-bin限定でもそうでなくても、配置は基本的に同じです。
  • cgi-binでHTMLファイルが表示できない場合、「form.html」はwwwサーバに配置します。HTMLファイルを置くこともできない場合、テンプレートファイルの拡張子は「.txt」など配置可能なものを使用してください。
  • 上記のうち赤字のファイル名は、任意のものに変更した方がセキュリティ面でより安全です(拡張子以外)。
    上記のうち黄色文字のフォルダ名やファイル名は任意のものに変更可能です(拡張子以外)。
    ファイル名の変更はアップロード前に行い、アップロード後に管理ページで指定ファイル名も変更してください。
  • カッコ内の数字はパーミッションです。サーバによっては755→700、666→600など異なるケースもありますから、ご確認ください。指定していないものは、デフォルトのままでOKです。
スクリプトの設置方法
次の要領で設置します。
  1. rcalel.cgi」「admin.cgi」「uploader.cgi」をテキストエディタで開き、1行目のパスを合わせます。通常は「#!/usr/bin/perl」「#!/usr/local/bin/perl」のいずれかです。ファイル内はこれ以外、特に変更する必要ありません。
    セキュリティ面でファイル名を変更する場合は、アップロード前に行っておきます。
    kanri_data.csv」については、デフォルトの「rcalender」フォルダには含まれません。管理ページの「ファイル送信」でアップロードします。管理表の扱いと日々の更新等を参照してください。
  2. rcalender」をフォルダごとテキストモードでサーバに転送し、それぞれ上記のパーミッションを設定します。
  3. 予約等のフォームを使用する場合は、フォーム用HTMLファイルをサーバの任意の場所に転送します。
スクリプトの設定
ブラウザで管理ページ(admin.cgi)にアクセスして、以下の項目を設定します。
初期パスワードは「0000」です。

 (1) 管理パスワード
管理パスワードは必ず任意のものに変更してください。初期パスワードのままでは、アップロード画面にアクセスできません。
パスワードを暗号化するには「暗号化」のチェックボックスをチェックします()。暗号化のオン・オフを切り替える際には、同時にパスワードも変更してください。
 (2) HOME URL
ホームページのURLを設定します。戻り先として、環境設定やファイル送信後にリンクが表示されます。
 (3) タイトル
このカレンダーのタイトルを設定します。ブラウザのタイトルバーにも表示されます。
 (4) データファイル
予約データを記録したCSVファイルを指定します。データディレクトリ内に置くものとし、本体スクリプトから見た相対パスで設定します。
セキュリティ上、任意のファイル名を使用する方がより安全です
 (5) 表示マーク
カレンダーに表示するマークとその説明、及びフォームへのリンクのオン・オフを設定します。
管理表では、日付欄を空欄にするか「1」または「2」の数値を入力します。これで最大3種類の状態を表すことができます。ここでそのそれぞれに対し、カレンダーで表示するマークを任意に決めて対応させることができます。
「過日」は、過ぎ去った日に表示するマークです。過去の日は、機械的にこのマークが表示されます。
フォームリンクのオンが1つ以上あれば、指定マークがリンクボタンになっている旨の解説を表示します。
 (6) 表のカラー設定
ライン、背景、文字のカラーを設定します。カラーコードは参考ページを参考にしてください。
休日は、日曜と同じ色が適用されます。
 (7) 表示月数
一度に表示する月数を指定します。「1行表示数」は横並びの数です。この数が表示数より少なければ複数行になります。できるだけ割り切れる数にしてください。
 (8) 管理用ボタン
カレンダー下部に、管理ページへのアクセスボタンを表示するかどうかを選択できます。表示しない場合、管理ページ(admin.cgi)はURLをブックマーク等に登録してご利用ください。
 (9) テンプレートファイル
カレンダー表示ページのテンプレートファイルをデータディレクト内に置くものとし、本体スクリプトから見た相対パスで指定します。
セキュリティ上、任意のファイル名を使用する方がより安全です
 (10) フォームURL
カレンダーからリンクするフォーム等をhttp://からURLで指定します。
 (11) アップロード用スクリプト
アップロードに使用するスクリプトです。スクリプト名のみ指定します。セキュリティ上、任意のファイル名を使用する方がより安全です
 (12) アップロードを許可する拡張子
gif jpg ...」など、スペースで区切って指定します。大文字と小文字は区別されます。拡張子の種類は任意ですが「csv」と「txt」は必ず指定してください。「html」も指定しておくと、テンプレートファイルを送信することで、ページデザインの変更もブラウザ上から可能になります。
 (13) アップロード先ディレクトリ名
アップロード先にはデータディレクトリを、本体スクリプトから見た相対パスで指定します。
データディレクトリには休日データが入っています。またデータファイルはもちろん、テンプレートファイルもここに配置すれば、ブラウザから自由にアップロードできます。日々の更新だけでなく、休日データの更新やページデザインの変更にも便利です。
 (14) 休日データのファイル名
休日データです。本体スクリプトから見た相対パスで指定します。
セキュリティ上、任意のファイル名を使用する方がより安全です

任意のファイル名の設定は、必ず実際のファイル名と同じでなければなりません。ご注意ください。
以上の設定が終われば「設定」ボタンを押します。続いて完了画面から「管理ページ」をクリックし、アップロードページを表示します。

 (15) CSVファイルの仮アップロード
初めての時はとりあえず、上記で設定したCSVファイル名の空のファイルを作ってアップロードします。アップロードするには「参照」をクリックし、ディスクからCSVファイルを指定して「ファイル送信」を押します。
正常に送信されると送信完了の画面になります。ここで「カレンダー」をクリックすると、カレンダーページが表示されます。空のCSVファイルなのでリンクボタンのないカレンダーのみになりますが、これが表示されればスクリプトの設定はOKです。
もちろん、最初から管理表の扱いと日々の更新等の要領でCSVファイルを作ってアップロードすれば、設定したマークを含めたカレンダー表示になります。
  • 暗号化は、復元できないランダムな文字列に置き換える処理をしています。そのため、仮に暗号を含むデータを盗まれても、そこから元のパスワードには戻せません。
  • パスワードを忘れてしまったり、入力間違いなどで設定したパスワードがわからなくなったりすると、まったくアクセス不能になります。そうなった時は、初期状態の「config.pl」をサーバに再送信してください。これで初期パスワードでのアクセスが可能になります。もちろん各種設定も初期状態に戻りますので、改めて設定してください。
表示するページの設定
カレンダーを表示するページは、テンプレートを使って自由にデザイン・レイアウトができます。テンプレートの作成は、次の点に留意して行ってください。
 (1) テンプレートファイルの最低条件
手プレートにするHTMLファイル内には、同梱の「temp.html」のように、カレンダー表示位置の最初と最後を、それぞれ次のように指定します。この二つの間には、タグなど何も含めないでください。
<!-- START_CALENDER -->
<!-- END_CALENDER -->
ヘッダのタイトルタグを次のようにすると、環境設定で設定したタイトルがタイトルバーに表示されます。
<TITLE><!--TITLE_include--></TITLE>

 (2) リンクや画像ファイル等の扱い
テンプレートファイルの内容はスクリプトに読み込まれて表示されます。テンプレートにリンクや画像ファイルを配置する場合、実際に表示されるのは一つ上のスクリプトのある階層であることに留意してください。
わかりにくい場合、リンクや画像ファイルはhttp://から始まるURLで指定するとよいでしょう。

 (3) スタイルシートについて
テンプレートでスタイルシートを使用するのは自由にできます。
書き出すカレンダー部分にスタイルシートの適用はありません。以下のタグを使用していますので、スタイルシート設定の参考にしてください。
メインタイトル…… <H2>
タイトル下のテキスト部分…… <P>
カレンダーの表示月…… <H3>
カレンダー部分…… <TABLE><TBODY><TR><TD>(テーブルタグ一式)


 (4) フォームについて
予約等のフォームについては何の制約もありません。自由に作成してください。
管理表の扱いと日々の更新等
このスクリプトは、その都度CSVファイルを送信して更新するのが特徴です。CSVファイルとは、データがカンマで区切られたファイルです(Comma Separated Value)。

 (1) 同梱のエクセルファイルの利用
このスクリプトには、下図のような管理表用のエクセルファイルを同梱しています。日付欄に数値(「1」または「2」)を入れ、CSV形式で別名保存するだけで簡単にCSVファイルが作成できます。
また、年月欄の年部分を入れ替えると曜日表示も連動して変わります。閏年にも対応していますので、極端に言えば永久に使えます。
サンプル
  • 使用方法
    • シート保護を設定してあります。入力できるのは黄色いセルだけです。
    • シートは1月から12月までの1年分です。カレンダーで過去の日はすべて「過日」マークになりますので、その月が終われば管理表の該当月は翌年用にまわせます。たとえば1月が終わって2月になれば、「20071」を「20081」に変更してOKです。
    • 定休日欄に曜日を入力すると、その曜日がすべて「2」になります。黄色いセルに「0」「1」を入力するとそれも反映しますので、不定休にも対応します(2/4欄参照)。「0」は日付欄を強制的に空欄にします。
    • 長期にわたって利用可能にすることを優先したため、将来において流動的な休日データはありません。お手数ですがこれだけは、黄色のセルのカラーを変えるなど、個別に調整してください。
    • エクセルファイルのファイル名は任意ですが、書き出すCSVファイルと拡張子だけが違う同名にしておくのが楽だと思います。
    • 環境設定で設定したマークに対応する数値を日付欄に入力し、まずエクセルファイルをエクセル形式で保存します。続いてCSV形式で別名保存します。これがCSVファイルです。
 (2) 管理表のカスタマイズ等(カスタマイズしなければ飛ばして(3)へ)
エクセルファイルのシート保護を解除すれば、自由にカスタマイズできます。初期保護パスワードは「1234」です。
もちろんCSV形式にできれば、作成するアプリケーションは何でもかまいません。
CSVファイルの最低条件は次の二つですので、カスタマイズの際の参考にしてください。
[1] 冒頭に5〜6桁の年月データがある(ここが空欄なら有効データとみなさない)
[2] 年月データの直後から日付順に日毎データが並んでいる
つまり、1列目にデータがなければ無効行なので、その行はデータ以外の何に使用してもかまいません。
日毎のデータは、該当月の日数をスクリプト側で数えますので、月末日以降のデータは無視されます。
年月と日付が対応してさえいれば、行の順番は月順である必要はありません。
年月データで1桁の月に0をつけて「200701」とするのは可ですが、年と月を別のセルに分割するのは不可です。

 (3) ファイルのアップロード
CSVファイルを作成したら、ファイルをアップロードします。アップロードは管理ページの「アップロード」で行います。使用頻度が高くなるので、管理ページにアクセスしたらこのアップロードページが表示されるようにしてあります。
「参照」をクリックしてディスク内のCSVファイルを指定し「ファイル送信」をクリックします。正常に送信されたら完了画面になります。「カレンダー」をクリックしてカレンダーを表示し、確認します。
なお、一度に送信できるサイズは128KBまでです。

 (4) 休日データの更新
カレンダー表示用の休日データは2008年分まで、データディレクトリ内の「holiday.txt」に入っています。
2009年以降は、このファイルにデータを追加(もちろん古いものは消してかまいません)して、アップロードページからアップロードしてください。ファイルは次のように、1行1日で単純に並べたものです。
2007/1/1
2007/1/8
2007/2/11
2007/2/12
セキュリティについて
本スクリプトは簡易なもので、仕組みはすべて公開されています。
特に、データファイルを送信することで内容を更新しますから、外部からファイル等を送信され、内容を改ざんされる可能性がないとは言い切れません。この点をあらかじめご承知おきの上、ご利用ください。
それでも、一応は次のような対策を講じています。
  • パスワードは暗号化し、ファイルのアップロード時にも背後でパスワードの認証をしています。
  • アップロード用のスクリプトには直接アクセスできなくしてあります。
    ここまででも、基本的には外部からデータを送信することは難しいと思います。
  • アップロードスクリプトやデータファイルの名称を変更しても対応できるよう、環境設定画面に指定項目を設置してあります
    アップロードスクリプト名を変更すれば、管理モードのファイルアップ画面にアクセスしてフォームのソースを見ない限り、スクリプト名はわかりません。
    さらにデータファイル名をオリジナルに変更してしまえば、送信すべきファイルを推測することは困難になります。
利用にあたってのご注意
本スクリプトはベータ版の間、フリーウェアです。下記にご留意の上、私用、商用を問わず自由に利用・改造・流用・再配布していただいてけっこうです。
著作権の表示は削除しないでください。
改造は自己責任で行ってください。
本スクリプトの開発環境はMacOS X 10.4.8です。いかなる環境においても動作することを保証するものではありません。
このスクリプトの利用が原因で起こるいかなる損害にも、えでぃっとはうすは一切の責任を負いません。
著作・制作
えでぃっとはうす


][