ブログ - 最新エントリー

piCal の日付表示は長表記で 「2007年10月21日(金曜日)」のように表示される。
個人的な趣味と、携帯からのアクセスなどを考慮して「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
	) ;
}
  • トラックバック (0)
  • 閲覧 (13245)
piCalのリスト表示画面を簡素化しよう。


(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&amp;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'>


無事完了。
  • トラックバック (0)
  • 閲覧 (4447)
詳細情報画面をもう少し簡素化したい

詳細画面のテンプレートは 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>

を削除する。
  • トラックバック (0)
  • 閲覧 (5379)

piCal [0.91h] を Hack

カテゴリ : 
Customize/Hackメモ » piCal
執筆 : 
masa 2008/5/17
piCal はすばらしいカレンダーモジュールだ。
できれば D3対応してxoopsテンプレート化してもらえれば
なお良いのだが...
それまでは、ちまちまとHackして待つこととしよう。

まずは分析開始...

■画面の作りについて
piCal の画面は xoops のテンプレートを使っていない?
(一部 xoops テンプレートになっているが)
モジュールディレクトリにあるテンプレートと、プログラムにハードコードされたものでできているようだ。
  • トラックバック (0)
  • 閲覧 (4455)
管理画面のデザインを変更したいときもたまにある。

この場合、ファイルテンプレートを編集する。

/modules/legacy/admin/theme/admin_theme.html
  • トラックバック (0)
  • 閲覧 (5432)
テンプレート user_userinfo.html を適宜修正する。
  • トラックバック (0)
  • 閲覧 (3786)
処理中のリダイレクト画面(ログイン時など...)
テンプレートを編集する
互換モジュール legacy_redirect.html
  • トラックバック (0)
  • 閲覧 (4568)
本来はプリロードで対応すべきかもしれないが、項目の追加/削除だけなのでHackしてしまう。

項目の削除はテンプレートの範囲でも結構できる?
「ユーザーモジュール 」テンプレート 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'));
  • トラックバック (0)
  • 閲覧 (6224)
本当はプリロードで対応するのかなぁ?

でも、機能をいじりたいわけではないので、いつも
modules/legacy/templates/legacy_site_closed.html
を直接編集しています。
  • トラックバック (0)
  • 閲覧 (4214)
新規ユーザー登録時に管理者に飛ぶ承認キーメールをカスタマイズする。

テンプレートは 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 /> が表示されてしまうが...
  • トラックバック (0)
  • 閲覧 (4147)