• カテゴリ Customize/Hackメモ の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - Customize/Hackメモカテゴリのエントリ

(追記)ここに書いてあることは間違いではありませんが、もっと簡単でした。文末参照↓orz

・EUC-JPのランゲージファイルをコピーして UTF-8のランゲージファイルを作成

language,install/language,modules/*/language 下の japanese/* を UTF-8 に変換して ja_utf8/ へコピーする。

・コピーしたファイルを修正

install/language/ja_utf8/install.php
define('_INSTALL_CHARSET','UTF-8');


mb_internal_encoding( 'UTF-8' ) ;
mb_http_output( 'UTF-8' ) ;

modules/legacy/language/ja_utf8/global.php
define('_CHARSET', 'UTF-8');

modules/legacy/language/ja_utf8/global.php
$GLOBALS['xoopsDB']->queryF("/*!40101 SET NAMES utf8 */");
//$GLOBALS['xoopsDB']->queryF("/*!40101 SET SESSION collation_connection=utf8 */");

(追記)ランゲージファイルは Package_Legacy の extras に入っていました。
これらをコピーすればOKです。
  • トラックバック (0)
  • 閲覧 (4034)

piCal [0.91h] 編集画面の簡素化

カテゴリ : 
Customize/Hackメモ » piCal
執筆 : 
masa 2008/5/24
piCal の編集画面も簡素化しよう。

繰り返しは便利だと思うが、今回の用途ではわかりやすさが第一なので
単純に削除することにする。
本当は隠しておいて、必要なときだけ出せばいいのだが...

(1) タイムゾーンを削除する
(2) 繰り返しを削除する

ハードコードされた部分を直接編集
get_schedule_edit_html (piCal/class/piCal.php)

(1) 2100行あたりの下記の部分を削除

<tr>
	<td class='head'>"._PICAL_TH_TIMEZONE."</td>
	<td class='even'><select name='event_tz' $select_timezone_disabled>$tz_options</select></td>
</tr>

TZを hidden でセットしておかなければいけないかと思ったが、単純に削除するだけでうまくいった。

2144行目あたりの下記のコードを削除

<tr>
	<td class='head'>"._PICAL_TH_RRULE."</td>
	<td class='even'>" . $this->rrule_to_form( $rrule , $end_ymd ) . "</td>
</tr>

こちらも削除しただけで大丈夫のようだ。
  • トラックバック (0)
  • 閲覧 (4479)
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)
  • 閲覧 (12915)
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)
  • 閲覧 (4280)
詳細情報画面をもう少し簡素化したい

詳細画面のテンプレートは 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)
  • 閲覧 (5219)

piCal [0.91h] を Hack

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

まずは分析開始...

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

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

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