Calendarizmはphpのカレンダー表示スクリプトです。
カレンダーだけの表示と、スケジュールの登録・表示ができます。
いい感じにページへ埋め込めるXHTMLのカレンダーが中々見つからなかったので
カッとなってXHTML&UTF-8のサイトで使いやすい仕様で作ってみたものです。
※サンプルの設置場所は@pages鯖です
カレンダーと管理ページのスタイルは全てCSS。CSSをテンプレートのように使えます。
コーダーの精神に優しいXHTML Validなソース。W3Cのチェックだって怖くない。
PHPバージョン4.3以上なら動作すると思います。今後の更新でVer5のみになるかもしれない。
大雑把な仕様説明
- 出力ソース ・・・ XHTML 1.0
- デザイン変更 ・・・ CSSを変える
- 表示種類 ・・・ 1週1行(テーブル)・1日1行(リスト)・1日1テーブル(日めくり)。予定表示モードとカレンダーモード。
- タグ対応 ・・・ Wiki記法により一部使用可
- 祝日表示 ・・・ 未対応。需要があればしようかな~程度の認識。
- 複数設置 ・・・ 未対応。
※関数書けば書いただけ出力されるが、同じページ内に2つ以上ある場合は次月・前月の表示が全てのカレンダーで同じになる
※スクリプトを複製して同じページ内に2つインクルードすることは出来ません。1ページ1スクリプトです。 - 管理画面 ・・・ ログインフォームからパスワード送信。または直接アクセス。
※一旦ログインすればadmin.phpにアクセスするだけでログイン状態になります。
※クッキー保存期間は30日くらい。 - 予定登録 ・・・ 1日あたりのログ制限はなし。全体件数のみ設定があります。
※新規登録時に同じ日付の予定がすでに存在した場合は、登録されているデータの下に改行して追加します - 他スクリプトとの連携 ・・・ 特になし
ダウンロード
動作サンプルページ
管理ページへのパスワードはpassです。ログインフォームはページ最下部にあります。
お約束
- 個人・法人問わずフリー使用できます
- 著作権表示はソースそのものを削除しないなら、CSSでvisibility:hiddenやdisplay:noneしても構わないです。
- スクリプトを使用して損害が発生しても作者は一切責任を負いません。
- ↑なので事業者の代行設置も自己責任でなら無問題。
- 悪いことには使わないでください
- 突然配布や修正をやめる可能性があります
“calendarizm v0.6” をダウンロード calendarizm_v0.6.zip – 1417 回のダウンロード – 13 KB
バージョンアップ情報はINFOMATIONカテゴリで投稿してます。
こちらのINFOMATIONカテゴリRSSを受信すると便利かもしれないです。
ファイル構成
ファイルの文字コードは全てUTF-8。
- calendarizm.php ・・・ 設定ファイル。カレンダー本体。
- admin.php ・・・ 管理ページ本体。カレンダーモードの使用なら必要ない
- log.dat ・・・ ログファイル。カレンダーモードの使用なら必要ない
- style.css ・・・ 管理画面用CSS。カレンダーモードの使用なら必要ない
- calendar1.css・calendar2.css・calendar3.css ・・・ サンプルのスタイルシート
- indx.php ・・・ サンプルのトップページ
必要に応じてスタイルシート・calendarizm.php内の設定を変更してください。
パーミッションはlog.datのみ書き込み可能なやつ(600~666)で、
phpはサーバの指定に従ってください。
カレンダー表示
表示するページをphpにしてください。
get_calendar()より上に次のソースを書きます。
<?php include_once('calendarizm.php'); ?>
カレンダーを表示したい場所に次の関数を書きます。
<?php get_calendar($style,$mode,$width,$border,$cellpadding,$cellspacing,$id); ?>
※注意
- 同じページ内に2つ以上関数がある場合は次月・前月の表示が全てのカレンダーで同じになる。
たとえば、日めくりモードとリストモードのカレンダーを表示している場合、
リストモードでページ送りをすると日めくりモードの表示も変わります。 - 同じページ内に2つcalendarizm.phpをインクルードすることは出来ません。
スクリプトを複製してカレンダーを同時に表示しようとするとエラーになります。
基本的にカレンダーはひとつで十分だろう、という考えなので今のところ複数設置は対応してません。
プロパティ
- $style(string:list/table) ・・・ テーブルスタイル。listで1日1行、tableで1週1行のテーブルになります。デフォルトはtable
- $mode(boolean:true/false) ・・・ 表示モード。trueにするとログファイルのデータを出力しなくなります。デフォルトはfalse
- $width(integer) ・・・ カレンダーテーブルの横幅。デフォルトはありません
- $border(integer) ・・・ カレンダーテーブルのボーダー。デフォルトは1。
- $cellpadding(integer) ・・・ カレンダーテーブルのセルとセルの間隔。デフォルトは0
- $cellspacing(integer) ・・・ カレンダーテーブルのセル内内側の余白。デフォルトは0
- $id(string) ・・・ カレンダーのテーブルにつけるID。命名規則はCSSの仕様に基づく。デフォルトはcalendar
サンプル
<?php get_calendar("table",true,"150","0");?> //出力は次のようになります。 //<table width="150" border="0" cellspacing="0" cellpadding="0" id="calendar">
右側に位置するプロパティは省略できますが、左側に在るものを飛ばして設定することは出来ません
ログインフォーム
管理画面へのログインフォームを表示します。
<?php loginform($pass,$id);?>
プロパティ
- $pass(string) ・・・ 関数を使用しているファイルからのadmin.phpへのパス。デフォルトはadmin.php(同じ階層)
- $id(string) ・・・ フォームタグにつけるID。デフォルトはありません
サンプル
//表示するページとadmin.phpが同じ階層 loginform(); //表示するページが一つ上 loginform("carendarizm/admin.php");
スタイリング
カレンダーとログインフォームのスタイリングは全てCSSです。
PHPから出力されるソースは次のようになっています。
- カレンダーのテーブル(デフォルト) ・・・ id=”calendar” border=”1″ cellspacing=”0″ cellpadding=”0″
- 現在の西暦と月、前後月への矢印 ・・・ caption
- $mode=tableの曜日 ・・・ theadのth
- $mode=tableの日付 ・・・ tbodyのtd、ttタグ
- $mode=tableのログ表示 ・・・ tbodyのtd
- $mode=listの曜日と日付 ・・・ tbodyのth
- $mode=listのログ表示 ・・・ tbodyのtd
- 日めくりモードの年 ・・・ captionのclass=”year”
- 日めくりモードの月 ・・・ captionのclass=”month”
- 日めくりモードの日 ・・・ thのclass=”day”
- 日めくりモードの曜日 ・・・ thのclass=”week”
- 日曜日のセル ・・・ class=”sun”
- 土曜日のセル ・・・ class=”sat”
- 当日のセル ・・・ class=”today”
- copyright ・・・ address class=”wtn”
土曜・日曜・当日などはclassつけてるだけなので、CSSで何も設定しなければ表向きは何も無いように表示されます。
//$mode="table" <table border="1" cellspacing="0" cellpadding="0" id="calendar"> <caption> <a href="/wtn/wp-content/uploads/calendarizm/index.php?location=1209567600" class="back">«</a>2008年6月<a href="/wtn/wp-content/uploads/calendarizm/index.php?location=1214838000" class="next">»</a> </caption> <thead> <tr> <th scope="col">日</th> <th scope="col">月</th> <th scope="col">火</th> <th scope="col">水</th> <th scope="col">木</th> <th scope="col">金</th> <th scope="col">土</th> </tr> </thead> <tbody> <tr> <td class="sun today"><tt>1</tt></td> <td><tt>2</tt></td> <td><tt>3</tt></td> <td><tt>4</tt></td> <td><tt>5</tt></td> <td><tt>6</tt></td> <td class="sat "><tt>7</tt></td> </tr> ・ ・ ・ </tbody> </table>
ログインフォームのソース
- ログインフォーム ・・・ デフォルトのIDはありません
- ログインフォームのテキストボックス ・・・id=”loginPass”
- ログインフォームの送信ボタン ・・・ button
<form action="admin.php" method="post"> <p><input type ="text" name="loginPass" id="loginPass" /> <button type="submit" name="action" value="LOGIN">admin</button></p> </form>
バージョン履歴
Ver0.6の変更は、calenderizm.phpとadmin.phpを上書きしてください。
- 2008/12/19 Ver0.6 登録画面の西暦セレクトメニューを修正(デフォルトで前後2年出力)
- 2008/07/13 Ver0.55 サンプルのファイル(indexとcss)だけ変更
- 2008/06/28 Ver0.5 配布開始
- 2008/06/02 公開テストで様子を見る
私の設置のときのミスがもとなのかもしれませんが、2009年1月の予定を入力しようとしたのですが、admin.php画面では2009年を選択することができませんでした。解決方法はありますでしょうか?
admin.phpの
279行目付近に、年の初期値
286行目付近に、年のセレクトボックスを生成するfor文があります。
この2つを変更すれば選択可能です。
$y =date(‘Y’)-2; →2年前から
for ($i=0; $i<10; $i++) →+9年後まで
配布ソースは次バージョンにて修正します
santaです。カレンダーも使い勝手がつごく良かったので、使わせて頂きます。申し訳ございません、phpやっぱり読めないでした。もっと努力します。ご助言をお願い申し上げます。。
フォルダごと、サーバにUP
(url省略)
ここで見ることができるのは、黒の画面で、テーブルカレンダー、右がリストカレンダーです。
管理画面に入りますと、明るいアイボリーのリストカレンダーでした。書き込みもOKでした。
このような感じで一般の方にお見せしたいです。(黒メインではなく)
ですが、一般の方にお見せする際のアドレスは、
(url省略)
に、なるのでしょうか?左側にカレンダー、右側にリストカレンダーになってしまうので、アイボリーのリストカレンダーadmin.phpのようなアイボリーのリストカレンダーだけを作成するときには、どのようにすれば、よろしいのでしょうか?
表現が下手で、申し訳有りません。お時間が御座いましたら、是非よろしくお願い致します。
●アイボリーのリストカレンダーのみで、一般の方にお見せしたいです。
●また、お見せするときのアドレスが分かりません。
●カスタマイズする場所を教えて頂けましたら、大変嬉しいです。
どうぞ、よろしくお願い致します。
失礼致します。
さんた さん>
カレンダーはPHP形式のページ(拡張子が.php)内でしか表示できません。
PHPのページであれば、上記「カレンダー表示」の項目にある冒頭2つのソースを張り付ければ
場所を問わず表示させることが可能です。
表示形式は、カレンダー出力用関数の最初の引数で設定します。
関数を出力した数だけカレンダーが表示されますが、同一ページ内にあるカレンダーは年月を変更した場合に連動します。
新しくカレンダー用のページを設ける場合は、既存のページを複製したのち拡張子をphpに変更して
サンプルのindex.phpから必要なソースをコピペすると良いと思います。
カレンダーのスタイルはすべてCSSで設定しています。
上記「スタイリング」を参考にサンプルのCSSを修正してみてください。
Tenderfeel さん
さんたです。ありがとうございます
はい、index.phpですね。
左のほうのカレンダーを削除致しました。
色を、黒から、CSSにて変更中で、お陰さまで、なんとかうまくいきそうです。
こんな素晴らしいcalenderありがとうございます!!
もうちょっと、、、、頑張ります!!
とくにリスト型のカレンダーは、結構需要がありそうなのに、こういったカレンダーがなかったように思います。
とても使い勝手がいいです!よく言えば、祝日のclassがあれば、最高です。