ブログ - 最新エントリー
piCal の日付表示は長表記で 「2007年10月21日(金曜日)」のように表示される。
個人的な趣味と、携帯からのアクセスなどを考慮して「2007/10/21(金)」のように変更したい。
まず調べてみると、_PICAL_FMT_YMDN なる変数が 「pical_constants.php」にあるのがわかったが、言語定数管理画面でいじってみても何も変わらない。
これはランゲージマネジャーを使っていないということなのかな?
よくわからないのでソースを Hack
get_long_ymdn (piCal/class/piCal.php) を変更すると、根こそぎ変わりそうだ。
申し訳ないですが、ハードコードしちゃいましょう。
個人的な趣味と、携帯からのアクセスなどを考慮して「2007/10/21(金)」のように変更したい。
まず調べてみると、_PICAL_FMT_YMDN なる変数が 「pical_constants.php」にあるのがわかったが、言語定数管理画面でいじってみても何も変わらない。
これはランゲージマネジャーを使っていないということなのかな?
よくわからないのでソースを Hack
get_long_ymdn (piCal/class/piCal.php) を変更すると、根こそぎ変わりそうだ。
申し訳ないですが、ハードコードしちゃいましょう。
function get_long_ymdn( $time )
{
return sprintf(
'%1$s/%2$s/%3$s(%4$s)' , // format
date( 'Y' , $time ) , // Y
date( 'n' , $time ) , // M
date( 'j' , $time ) , // D
$this->week_short_names[ date( 'w' , $time ) ] // N
) ;
}
piCalのリスト表示画面を簡素化しよう。
(1)「投稿者」と「繰り返し」を削除する
これはテンプレートでできる。
テンプレート pical_event_list.html を修正。
今回はコメントアウトしてみよう。
結果はdiff 表示で...
無事完了。
(1)「投稿者」と「繰り返し」を削除する
これはテンプレートでできる。
テンプレート pical_event_list.html を修正。
今回はコメントアウトしてみよう。
結果はdiff 表示で...
@@ -93,24 +93,24 @@
</tr>
</table>
<table width='100%' class='outer' cellpadding='4' cellspacing='1'>
<tr valign='middle'>
- <th class='head'><{$lang_submitter}></th>
+<{* <th class='head'><{$lang_submitter}></th> *}>
<th class='head'><{$lang_startdatetime}></th>
<th class='head'><{$lang_enddatetime}></th>
<th class='head'><{$lang_summary}></th>
- <th class='head'><{$lang_rrule}></th>
+<{* <th class='head'><{$lang_rrule}></th> *}>
<th class='head'><{$lang_admission}></th>
<th class='head'><input type='checkbox' name='dummy' onclick="with(document.MainForm)
{for(i=0;i<length;i++){if(elements[i].type=='checkbox'){elements[i].checked=this.checked;}}}" /></th>
</tr>
<!-- Start event loop -->
<{foreach item='event' from=$events}>
<tr>
- <td class='<{$event.oddeven}>'><{$event.submitter_info}></td>
+<{* <td class='<{$event.oddeven}>'><{$event.submitter_info}></td> *}>
<td class='<{$event.oddeven}>'><{$event.start_date_desc}><br /><{$event.start_time_desc}></td>
<td class='<{$event.oddeven}>'><{$event.end_date_desc}><br /><{$event.end_time_desc}></td>
<td class='<{$event.oddeven}>'><a href='<{$mod_url}>/index.php?action=View&event_id=<{$event.id}>'>
<{$event.summary}></a></td>
- <td class='<{$event.oddeven}>'><{$event.rrule}></td>
+<{* <td class='<{$event.oddeven}>'><{$event.rrule}></td> *}>
<td class='<{$event.oddeven}>' align='center'>
無事完了。
詳細情報画面をもう少し簡素化したい
詳細画面のテンプレートは templates/picalN_event_detail.html だが
ここは全体の大枠があるだけで、情報部分はハードコーディングされている。
コードは class/piCal.php の get_schedule_view_html() メソッドの中だ。
今回の目的は項目を減らすという単純なもの
(1) 「開始/終了日時」の(GMT+) 表示を消す(なにしろとてもローカルなサイトなので...)
(2) 「レコード表示」「繰り返し」を消す(公開/非公開は編集モードで確認する...)
(1)はとりあえず
1744行目の $disp_user_tz = ... をコメントアウトして
のようにする
(2) は簡単
1857行目からの
を削除する。
詳細画面のテンプレートは templates/picalN_event_detail.html だが
ここは全体の大枠があるだけで、情報部分はハードコーディングされている。
コードは class/piCal.php の get_schedule_view_html() メソッドの中だ。
今回の目的は項目を減らすという単純なもの
(1) 「開始/終了日時」の(GMT+) 表示を消す(なにしろとてもローカルなサイトなので...)
(2) 「レコード表示」「繰り返し」を消す(公開/非公開は編集モードで確認する...)
(1)はとりあえず
1744行目の $disp_user_tz = ... をコメントアウトして
// $disp_user_tz = $this->get_tz_for_display( $this->user_TZ ) ;
$disp_user_tz = "";
のようにする
(2) は簡単
1857行目からの
<tr>
<td class='head'>"._PICAL_TH_CLASS."</td>
<td class='even'>$class_status</td>
</tr>
<tr>
<td class='head'>"._PICAL_TH_RRULE."</td>
<td class='even'>$rrule</td>
</tr>
を削除する。
piCal はすばらしいカレンダーモジュールだ。
できれば D3対応してxoopsテンプレート化してもらえれば
なお良いのだが...
それまでは、ちまちまとHackして待つこととしよう。
まずは分析開始...
■画面の作りについて
piCal の画面は xoops のテンプレートを使っていない?
(一部 xoops テンプレートになっているが)
モジュールディレクトリにあるテンプレートと、プログラムにハードコードされたものでできているようだ。
できれば D3対応してxoopsテンプレート化してもらえれば
なお良いのだが...
それまでは、ちまちまとHackして待つこととしよう。
まずは分析開始...
■画面の作りについて
piCal の画面は xoops のテンプレートを使っていない?
(一部 xoops テンプレートになっているが)
モジュールディレクトリにあるテンプレートと、プログラムにハードコードされたものでできているようだ。
管理画面のデザインを変更したいときもたまにある。
この場合、ファイルテンプレートを編集する。
/modules/legacy/admin/theme/admin_theme.html
この場合、ファイルテンプレートを編集する。
/modules/legacy/admin/theme/admin_theme.html
テンプレート
user_userinfo.html
を適宜修正する。
処理中のリダイレクト画面(ログイン時など...)
テンプレートを編集する
互換モジュール legacy_redirect.html
テンプレートを編集する
互換モジュール legacy_redirect.html
本来はプリロードで対応すべきかもしれないが、項目の追加/削除だけなのでHackしてしまう。
項目の削除はテンプレートの範囲でも結構できる?
「ユーザーモジュール 」テンプレート user_register_form.html
項目を追加したい場合はコードに手を入れる必要がある。
modules/user/forms/UserRegisterEditForm.class.php を編集して
mFormProperties[‘XXXX’]
mFieldProperties[‘XXXX’]
validateXXXX() などを追加するというのが基本。
サンプル=名前を登録項目にする。
function prepare() に以下を追加する。
function update に以下を追加する
項目の削除はテンプレートの範囲でも結構できる?
「ユーザーモジュール 」テンプレート user_register_form.html
項目を追加したい場合はコードに手を入れる必要がある。
modules/user/forms/UserRegisterEditForm.class.php を編集して
mFormProperties[‘XXXX’]
mFieldProperties[‘XXXX’]
validateXXXX() などを追加するというのが基本。
サンプル=名前を登録項目にする。
function prepare() に以下を追加する。
$this->mFormProperties['name'] =& new XCube_StringProperty('name');
$this->mFieldProperties['name'] =& new XCube_FieldProperty($this);
$this->mFieldProperties['name']->setDependsByArray(
array('required', 'maxlength'));
$this->mFieldProperties['name']->addMessage("required",
_MD_USER_ERROR_REQUIRED, _MD_USER_LANG_NAME, "60");
$this->mFieldProperties['name']->addMessage("maxlength",
_MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_NAME, "60");
$this->mFieldProperties['name']->addVar("maxlength", 60);
function update に以下を追加する
$obj->set('name', $this->get('name'));
本当はプリロードで対応するのかなぁ?
でも、機能をいじりたいわけではないので、いつも
modules/legacy/templates/legacy_site_closed.html
を直接編集しています。
でも、機能をいじりたいわけではないので、いつも
modules/legacy/templates/legacy_site_closed.html
を直接編集しています。
新規ユーザー登録時に管理者に飛ぶ承認キーメールをカスタマイズする。
テンプレートは modules/user/language/japanese/mail_template/adminactivate.tpl を編集すればいい。
language/japanese/mail_template/ にも同名のファイルがあるので間違えないように。
(実は、この罠にはまってしまった...)
文章を変えるだけでなく、項目も増やしたければ
/modules/user/class/RegistMailBuilder.class.php
に項目を追加する。
たとえば 150行目 (class User_RegistUsesrAdminActivateMailBuilder)
にこんな風に追加すれば「その他」に記入されたものを取ることができる。
(その前に登録時に「その他」を入力するように変更しなければダメだけどね...)
これでテンプレート中で{BIO}が使えるようになる。
「その他」は複数行入力可だから、このままだと <br /> が表示されてしまうが...
テンプレートは modules/user/language/japanese/mail_template/adminactivate.tpl を編集すればいい。
language/japanese/mail_template/ にも同名のファイルがあるので間違えないように。
(実は、この罠にはまってしまった...)
文章を変えるだけでなく、項目も増やしたければ
/modules/user/class/RegistMailBuilder.class.php
に項目を追加する。
たとえば 150行目 (class User_RegistUsesrAdminActivateMailBuilder)
にこんな風に追加すれば「その他」に記入されたものを取ることができる。
(その前に登録時に「その他」を入力するように変更しなければダメだけどね...)
$this->mMailer->assign('BIO', $user->getVar('bio'));
これでテンプレート中で{BIO}が使えるようになる。
「その他」は複数行入力可だから、このままだと <br /> が表示されてしまうが...