# Geeklog Mycaljp プラグイン

## バージョン: 2.1.1

## 作成者: Yoshinori Tahara - dengen

## 公開日: 2009.11.7

## ライセンス: GPL

## 概要:

- Geeklog用サイトカレンダです。
- PHPブロック関数版 mycaljp のすべての機能を継承し、さらに機能強化を行っています。

## 機能:

- コンテンツへのリンクが日付に張られています。日付のリンクをクリックするとその日のコンテンツの一覧が表示されます。
- 特に記事はイントロ部の一覧が表示されます。
- ユーザーが自由にカレンダのスタイルをカスタマイズできます。
- Geeklogのテーマごとのスタイル設定が可能です。
- 複数のプリセットテンプレートが用意されています。（現在３種類）
- 管理画面で手軽にコンフィギュレーションが可能です。（検索対象の絞り込みなど、設定変更が可能）
- 土、日、日本の休日の色分け表示が可能です。
- マルチランゲージに対応しています。
- アクセシビリティに配慮して、カレンダの読み飛ばし用リンクを配置しています。
- Ajax技術の活用により月めくりが軽くなっています。

## 条件:

- このプラグインは、バージョン2.1.0以降より、Geeklog 1.6.0 用となります。それ以前のバージョンのGeeklogでは動作しません。
- Dataproxyプラグインのバージョン1.1.4.1を別途インストールする必要があります。（バージョン1.1.4.1は、バージョン1.1.4をmycaljpプラグイン用に機能拡張したものです）
- 本プラグインをインストールする前に、PHPブロック関数版の mycaljp をアンインストールしてください。

## この説明のセクション:

- ０） PHPブロック関数版 mycaljp のアンインストール
- １） インストール
- ２） アンインストール
- ３） コンフィギュレーション
- ４） カスタマイズ（スタイルやレイアウトの変更）
- ５） スライドカレンダ
- ６） 改訂履歴

### ０） PHPブロック関数版 mycaljp のアンインストール

以下の説明で、

- <geeklog_dir> は、システムの config.php が存在するディレクトリ
- <public_html> は、lib-common.php が存在するディレクトリ
- <admin> は、管理者用ファイルが存在するディレクトリ（普通は、<public_html>/admin/ ）

を表しています。

本プラグインをインストールする前に、PHPブロック関数版の mycaljp をアンインストールしてください。

PHPブロック関数版 mycaljp をインストールしていない場合は、このセクションを読み飛ばしてもかまいません。

#### Step 0 - サイトカレンダ表示用ブロックの削除

- ブロック管理権限をもつユーザーでログインし、サイトカレンダー表示用ブロックを削除します。

#### Step 1 - PHPブロック関数の削除

- <geeklog_dir>/system/custom/phpblock_mycaljp.php を削除します。

#### Step 2 - lib-custom.phpの内容変更

- <geeklog_dir>/system/lib-custom.php"をテキストエディタで開き、次の文字列を見つけ出し、削除します。

    require_once( 'custom/phpblock_mycaljp.php' );

#### Step 3 - Geeklogテーマ内のテンプレートの削除

- サイトカレンダのカスタマイズを行うために作成された<テーマディレクトリ>/mycaljp/ ディレクトリを削除します。
- なお、スライドカレンダ用の<テーマディレクトリ>/mycaljp/ ディレクトリは削除する必要はありません。

#### Step 4 - ディレクトリの削除

- <public_html>/mycaljp/ ディレクトリを削除します。

Goto Top

### １） インストール

インストールには、手動でプラグイン用のディレクトリを作成し、適切なディレクトリへファイルをコピーする必要があります。

#### Step 0 - データベースのバックアップ

- mycaljp プラグインはテーブルを追加しませんが、管理者メニューの「DBのバックアップ」や phpMyAdmin を使用して、事前に Geeklog のデータベースをバックアップしておくことをお勧めします。

#### Step 1 - アーカイブの展開

- mycaljp プラグインのアーカイブを <geeklog_dir>/plugins/ ディレクトリに展開します。mycaljp という名前のディレクトリができます。

#### Step 2 - 必要なディレクトリの作成

- <public_html> ディレクトリの下に mycaljp という名前のディレクトリを作ります。
- <admin>/plugins/ ディレクトリの下にも mycaljp という名前のディレクトリを作ります。

#### Step 3 - 必要なファイルのコピー

- <geeklog_dir>/plugins/mycaljp/ ディレクトリに移動します。
- admin ディレクトリの内容を、Step 2 で作成した <admin>/plugins/mycaljp/ ディレクトリにコピーします。
- public_html ディレクトリの内容を、Step 2 で作成した <public_html>/mycaljp/ ディレクトリにコピーします。

#### Step 4 - プラグインエディタでインストールの実行

- Root ユーザとしてログインし、プラグインエディタから mycaljp プラグインのインストールを実行します。
- 失敗した場合には、エラーログ（ error.log ）を調べます。
- この時点で、mycaljp プラグインはインストールされ、機能しているはずです。（自動的にサイトカレンダ表示用ブロックが作成されます）

Goto Top

### ２） アンインストール

#### Step 0 - データベースのバックアップ

- mycaljp プラグインはアンインストール時に、テーブルの破棄などは行いませんが、管理者メニューの「DBのバックアップ」や phpMyAdmin を使用して、事前に Geeklog のデータベースをバックアップしておくことをお勧めします。

#### Step 1 - プラグインエディタでアンインストールの実行

- プラグインエディタから、mycaljp プラグインをアンインストールします。

#### Step 2 - ディレクトリの削除

- インストールの過程で作成した3つのディレクトリ（ <geeklog-dir>/plugins/mycaljp/ 、<public_html>/mycaljp/ 、<admin>/plugins/mycaljp/ ）を削除します。

Goto Top

### ３） コンフィギュレーション

管理画面のコンフィギュレーションから「Mycaljp」を選択すると、本プラグインの各種設定が行えます。
以下、設定項目を説明します。

#### サイトカレンダのメイン設定

設定項目 | デフォルト値 | 説明 | 該当の配列変数
--- | --- | --- | ---
ヘッダタイトル（年） | 'Y年' | ヘッダタイトルのうち、年を示す部分のフォーマットを設定します。 "Y" 年．4 桁の数字．(例: 1999または2003) "y" 年．2 桁の数字．(例: 99 または 03) | $_MYCALJP2_CONF['headertitleyear']
ヘッダタイトル（月） | 'm月' | ヘッダタイトルのうち、月を示す部分のフォーマットを設定します。 "m" 月．数字。先頭にゼロをつける．(01 から 12) "n" 月．数字。先頭にゼロをつけない．(1 から 12) "F" 月．フルスペルの文字．(January から December) "M" 月．3 文字形式．(Jan から Dec) | $_MYCALJP2_CONF['headertitlemonth']
ヘッダタイトルの順序 | 年 月 | ヘッダタイトルの年と月の表示順序を設定します。 一般的に、和風にしたいときは「年 月」、洋風にしたいときは「月 年」を選択します。 | $_MYCALJP2_CONF['titleorder']
各曜日タイトル | '日' '月' '火' '水' '木' '金' '土' | 曜日の文字列を設定します。 | $_MYCALJP2_CONF['sunday'] $_MYCALJP2_CONF['monday'] $_MYCALJP2_CONF['tuesday'] $_MYCALJP2_CONF['wednesday'] $_MYCALJP2_CONF['thursday'] $_MYCALJP2_CONF['friday'] $_MYCALJP2_CONF['saturday']
土・日・休日を色分け表示する | はい | 土・日・休日を色分け表示の有無を設定します。 「はい」を選択すると色分け表示します。 「いいえ」を選択すると色分け表示しません。 | $_MYCALJP2_CONF['showholiday']
日本の休日を調べる | はい | 日本の休日を調べるかどうかを設定します。 「はい」を選択すると日本の休日を色分け表示の対象とします。 「いいえ」を選択すると日本の休日を色分け表示の対象としません。 | $_MYCALJP2_CONF['checkjpholiday']
右サイドバーを表示する | はい | 日付のリンクをクリックしたあとの、コンテンツの一覧表示画面において、右サイドバーを表示するかどうかを設定します。 「はい」を選択すると右サイドバーを表示します。 「いいえ」を選択すると右サイドバーを表示しません。 | $_MYCALJP2_CONF['enablesrblocks']
記事のイントロを表示する | はい | 日付のリンクをクリックしたあとの、コンテンツの一覧表示画面において、記事のイントロ部を表示するかどうかを設定します。 「はい」を選択すると記事のイントロ部を一覧表示します。 「いいえ」を選択すると記事のタイトルを一覧表示します。 | $_MYCALJP2_CONF['showstoriesintro']
テーマのテンプレートを使う | いいえ | テーマで提供されているテンプレートを適用するかどうかを設定します。 <public_html>/layout/テーマ名/mycaljp ディレクトリ内のテンプレートを使用するかどうか設定します。 詳細については ４） カスタマイズ（スタイルやレイアウトの変更）を参照してください。 | $_MYCALJP2_CONF['use_theme']
テンプレート名 | default | サイトカレンダの表示に用いられるテンプレートを選択します。 本プラグインには最初から数種類のテンプレートが用意されています。 なお、名前に「_multi_language」を含むテンプレートはマルチランゲージ環境用に設定されたものです。 | $_MYCALJP2_CONF['template']
日付の形式 | [Y-m-d] | サイトカレンダの日付などをクリックした際の検索結果で用いられる日付の形式を設定します。 「日付の形式」で使用するパラメータは、PHPのdate()関数のformatパラメータと同じです。 | $_MYCALJP2_CONF['date_format']
サポートするコンテンツ |  | サイトカレンダが検索対象としてサポートするコンテンツを設定します。 | $_MYCALJP2_CONF['supported_contents']
有効にするコンテンツ |  | サイトカレンダが検索するコンテンツを設定します。 有効：1、無効：0 | $_MYCALJP2_CONF['enabled_contents']

#### 静的ページの設定

設定項目 | デフォルト値 | 説明 | 該当の配列変数
--- | --- | --- | ---
リストに掲載するタイプ | センターブロックに表示されるページのみ | サイトカレンダが検索する静的ページの種類を設定します。 | $_MYCALJP2_CONF['sp_type']
除外するページID | formmail | サイトカレンダの検索対象から除外する静的ページを設定します。 | $_MYCALJP2_CONF['sp_except']

Goto Top

### ４） カスタマイズ（スタイルやレイアウトの変更）

Geeklog テーマに合わせてサイトカレンダのスタイルやレイアウトを変更する方法を説明します。

ここでは、テンプレート「glossy_multi_language」を元にカスタマイズすることを例にして説明します。

PHPブロック関数版 mycaljp のカスタマイズ方法とは異なっていますので、ご注意ください。

また、PHPブロック関数版 mycaljp 用のテンプレートとは互換性がありません。

#### Step 0 - テンプレートのコピー

- サイトカレンダのテンプレートは <public_html>/mycaljp/templates/ ディレクトリに配置されています。
- この中の glossy_multi_language ディレクトリおよびその中の全てのファイルを、ご使用中のテーマディレクトリ内にコピーします。
- ご使用中のテーマディレクトリ内にコピーした glossy_multi_language ディレクトリの名前を mycaljp にリネームします。
- 管理画面のコンフィギュレーション-「Mycaljp」で、「テーマのテンプレートを使う」を「はい」に設定します。

#### Step 1 - CSSファイルとテンプレートファイルの変更

- CSSファイルの <テーマディレクトリ>/mycaljp/mycaljp.css をお好みに合わせて変更してください。
- テンプレートファイルの <テーマディレクトリ>/mycaljp/*.thtml をお好みに合わせて変更してください。

#### Step 2 - 配列変数 $_MYCALJP2_CONF の活用

- PHPファイルの <テーマディレクトリ>/mycaljp/config.php で配列変数 $_MYCALJP2_CONF を設定することができます。
- <テーマディレクトリ>/mycaljp/config.php の配列変数 $_MYCALJP2_CONF による設定は、管理画面でのコンフィギュレーションより優先されます。
- 「曜日タイトル」や「ヘッダタイトルの順序」などテーマ専用に指定したい場合などに活用できます。
- マルチランゲージ環境で言語ごとに「曜日タイトル」などを変えたい場合などに活用できます。
- 配列変数 $_MYCALJP2_CONF の詳細については、<geeklog-dir>/plugins/mycaljp/install_defaults.php を参照してください。(手抜き^^;)

Goto Top

### ５） スライドカレンダ

本プラグインには、水平方向に日付を並べた、いわゆるスライドカレンダが同梱されています。

スライドカレンダは、水平方向に長い形状であるため、通常サイドバーに表示させることは難しく、ヘッダー部に埋め込まれることが多いようです。

ここでは、スライドカレンダをGeeklogテーマのヘッダー部に埋め込む手順を説明します。

PHPブロック関数版 mycaljp に含まれていたスライドカレンダは本プラグインでもそのまま使用することができます。ただし、今回、機能強化していますので更新されることをお勧めします。

スライドカレンダはGeeklogテーマに埋め込んで使用しますので、同時にサイトカレンダのカスタマイズを行うことはできません。

#### Step 0 - テンプレートのコピー

- <geeklog-dir>/plugins/mycaljp/slidecalender/mycaljp/ ディレクトリおよびその中の全てのファイルを、ご使用中のテーマディレクトリ内にコピーします。

#### Step 1 - スライドカレンダ用CSSのインポート

- ご使用中のGeeklogテーマのテンプレートファイル（通常は style.css ）をテキストエディタで開き、テキスト中の適切な位置に次の文字列を挿入し保存してください。
  (@importルールの前にスタイルを記述したり、@importルールの間にスタイルを記述することはできませんので、ご注意ください。)

    @import url("mycaljp/mycaljp.css"); /* スライドカレンダ用スタイル */

#### Step 2 - Geeklogテーマのテンプレートファイルの変更

- ご使用中のGeeklogテーマのテンプレートファイル（通常は header.thtml ）をテキストエディタで開き、スライドカレンダを表示させたい位置に次の文字列を挿入し保存してください。
  これで、スライドカレンダは表示されるようになったはずです。

    <?php if (function_exists(mycaljp_slidecalender)) echo mycaljp_slidecalender(); ?>

#### Step 3 - CSSファイルとテンプレートファイルの変更

- CSSファイルの <テーマディレクトリ>/mycaljp/mycaljp.css をお好みに合わせて変更してください。
- テンプレートファイルの <テーマディレクトリ>/mycaljp/*.thtml をお好みに合わせて変更してください。

#### Step 4 - 配列変数 $_MYCALJP2_CONF の活用

- ４） カスタマイズ（スタイルやレイアウトの変更）の Step 2 をご覧下さい。

Goto Top

### ６） 改訂履歴

バージョン | 公開日 | 説明
--- | --- | ---
2.1.1 | 2009.11.7 | 修正 携帯電話でのカレンダ表示を改善し、月めくり操作が問題なくできるようにしました。
2.1.0 | 2009.11.3 | 追加 Geeklog1.6で動作するようにしました。 追加 Dataproxyに対応しました。（というかDataproxyが必須になりました） 追加 コンフィギュレーションとオートインストール機能に対応しました。
2.0.7 | 2009.8.17 | 修正 XSS脆弱性を修正しました。
2.0.6 | 2009.3.28 | 追加 Auge Bangさんが制作された、「mycaljp専用Black Theme」を同梱しました。(Augeさん、どうも有難うございます!) 修正 Geeklog1.5以降で記事のイントロ表示した際に日付が現在の日付になってしまう問題を修正しました。
2.0.5 | 2008.9.26 | 追加 インクルード対策を実施しました。
2.0.4 | 2008.9.17 | 追加 Calendarjpプラグインに対応しました。
2.0.3 | 2008.9.15 | 修正 CSRF対策のミスを修正しました。
2.0.2 | 2008.9.10 | 追加 CSRF対策を施しました(Geeklog1.5以降でのみ有効)。
2.0.1 | 2008.7.26 | 追加 Geeklog1.5で動作するようにしました。 修正 プラグインバージョンが正常に更新されない問題を修正しました。 修正 テンプレートおよびスタイルシートの軽微な修正。
2.0.0 | 2008.3.21 | 初期バージョン

Goto Top