PEAK XOOPS - How to use minihaku (6) in englishin japanese

Archive | RSS |
XOOPS
XOOPS : How to use minihaku (6)
Poster : GIJOE on 2006-09-06 10:19:52 (15994 reads)

in englishin japanese
How to add text/textarea.
This is not same as adding integer/bool.

I. do ALTER TABLE

ALTER TABLE (prefix)_users ADD user_map text not null default '';

II. edit templates

minihaku_edituser.html (edit minihaku_register.html too, if necessary)


<textarea name="user_map" id="user_map" cols="50" rows="6" /><{$user_map|escape}></textarea>

Don't forget escape as one of default Smarty modifiers.

system_userinfo.html

<tr>
  <td class="head">MAP</td>
  <td align="center" class="odd"><{$user_uid|minihaku_userinfo:"user_map":"uid"}></td>
</tr>

minihaku_userinfo as a custom Smarty modifier escapes the text.

III. write logics into include/config.php

III-B define extra fields

$extra_fields = array(
	'user_map' => array(
		'initval' => '' ,
		) ,
	) ;

Notice that '' is a string.

III-C Initialization and Query Part


if( empty( $minihaku_uid4whr ) ) {
	foreach( $extra_fields as $key => $attribs ) {
		$allowed_requests[$key] = $attribs['initval'] ;
	}
} else {
	$db =& Database::getInstance() ;
	list( $allowed_requests['user_map'] ) = $db->fetchRow( $db->query( "SELECT user_map FROM ".$db->prefix("users")." WHERE uid=$minihaku_uid4whr" ) ) ;

	// for the plugin of modifier.minihaku_userinfo.php
	$myts =& MyTextSanitizer::getInstance() ;
	$fields4html['user_map'] = $myts->displayTarea( $allowed_requests['user_map'] , 0 , 1 , 1 , 1 , 1 ) ;
}

Don't forget escaping specialchars of HTML. (The second parameter for displayTarea should be 0 or false)

If you don't escape specialchars, your site will be vulnerable for script insertion attacks.


Related articles
Printer friendly page Send this story to a friend

Comments list

daigo  Posted on 2007/1/4 20:17
いつもお世話になっています。

「ミニ白扇の使い方」はとても参考になりました。担当している社内サイトのアカウント項目を増やす事が面白くて、友人のサイトでも「ミニ白扇の使い方」を参考に項目を増やしてみました。とても理解し易いので簡単でした。
suinさんの白扇のコードを参考にユーザ名の重複チェックも付け加えてほぼ完璧の出来になっています。ありがとうございました。
GIJOE  Posted on 2006/9/30 5:40
いつでも時間は不足気味ですが

Quote:
システム管理用と思われるphpファイルのソースを見ていてもしやとは思っていたのですが、やはり本当に必要だというならコアHackするしかない、ということは理解いたしました。
ところで、GIJOEさんのコメントによるとXoopsCubeではシステム管理画面がテンプレート化されてきているような印象も受けるのですが、この局面でX2をコアHackするのとXCの開発が落ち着くのを待つのではどちらが賢明なのでしょう?

というか、管理画面ですよね?
管理者しか操作しないのですから、大抵のことはphpMyAdminの操作で間に合ってしまうと思いますよ。

もちろん、ある程度テーブル構造を理解しておく必要はありますが、それはフィールドをいじるレベルのコアHackをしているのですから、当然に必要な知識です。

ミニ白扇がらみだと、

users
groups
groups_users_link

だけ理解しておけば、とりあえず十分じゃないでしょうか。ユーザを削除する場合などは、他にも影響出る場所はあるでしょうけど。

いずれにせよ、今の時点で、実用サイトにCube2.1を導入するのは、正直勧められません。
これからもまだまだ抜本的な部分で仕様変更しそうな臭いがプンプンするからです
hamade  Posted on 2006/9/25 21:59
お返事ありがとうございます。
やはりいきあたりばったりで色々なことを学ぼうとしているので、体系的な理解ができていないようで申し訳ありません。
システム管理用と思われるphpファイルのソースを見ていてもしやとは思っていたのですが、やはり本当に必要だというならコアHackするしかない、ということは理解いたしました。
ところで、GIJOEさんのコメントによるとXoopsCubeではシステム管理画面がテンプレート化されてきているような印象も受けるのですが、この局面でX2をコアHackするのとXCの開発が落ち着くのを待つのではどちらが賢明なのでしょう?
データのフィールド数とユーザ数はまだまだマニュアル管理でも間に合う分量です。後々バージョンアップのことも考えるとXCへのバージョンアップを済まして今回想定している仕様を追加する作業を進めた方が良さそうな雰囲気でもありますが。お時間があるときで構いませんので、ご助言いただけますと幸いです。
GIJOE  Posted on 2006/9/23 4:05
この誤解をしている人、多いですね。
白扇もミニ白扇も「systemモジュール」には、手を入れません。

X2管理画面は元々テンプレート化さえされていませんから、コアHackするしかないでしょう。
hamade  Posted on 2006/9/21 15:27
はじめまして。
最近Xoopsの世界に踏み込んでしまったものです。
おかげさまでこのコラムのシリーズでDBへのフィールド追加、ユーザー登録画面(minihaku_register.html)、ユーザー情報表示画面(system_userinfo.html)、ユーザー自身が見るユーザー情報編集画面(minihaku_edituser.html)については書き換えることができました。ありがとうございます。
しかし、システム管理のテンプレート一覧を見る限り、システム管理モジュールのユーザー情報の編集画面をどこから書き換えるべきかわかりません。DBにユーザー情報のフィールドを追加する以上、管理者からも見られるようにしたいのですが、どのファイルに手を入れることになるのでしょうか。それとも何かの設定ミスでフックした内容が読み込まれていない、ということなのでしょうか。
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!