表紙 | 新規 | 一覧 | RSS | 検索 | 閲覧履歴 | 作成履歴 | 更新履歴

init_form関数 - YukiWikiベースのPonyWikiのソースを読んでみる その25

差分表示


[[YukiWikiベースのPonyWikiのソースを読んでみる]] その25

CGIへの引数を%formハッシュへ設定する関数。文字コード変換もやってる。

処理の流れは以下の通りです。

---(
sub init_form {
	if (param()) {
		foreach my $var (param()) {
			$form{$var} = param($var);
		}
	} else {
		$ENV{QUERY_STRING} = $[[FrontPage]];
	}

	my $query = &decode($ENV{QUERY_STRING});
	if ($page_command{$query}) {
		$form{mycmd} = $page_command{$query};
		$form{mypage} = $query;
	} elsif ($query =~ /^($wiki_name)$/) {
		$form{mycmd} = 'read';
		$form{mypage} = $1;
	} elsif ($database{$query}) {
		$form{mycmd} = 'read';
		$form{mypage} = $query;
	}

	# mypreview_edit		-> do_edit, with preview.
	# mypreview_adminedit   -> do_adminedit, with preview.
	# mypreview_write	   -> do_write, without preview.
	foreach (keys %form) {
		if (/^mypreview_(.*)$/) {
			$form{mycmd} = $1;
			$form{mypreview} = 1;
		}
	}

	#
	# $form{mycmd} is frozen here.
	#

	$form{mymsg} = &code_convert(\$form{mymsg}, $kanjicode);
	$form{myname} = &code_convert(\$form{myname}, $kanjicode);

# Admin ONLY MODE
	if ($admin_only_mode) {
		$form{myfrozen} = 1;
	}
	
# 携帯電話かどうかのチェック (かなり手抜き)
	if(	$ENV{'HTTP_USER_AGENT'} =~ /UP\.BROWSER/i	||
		$ENV{'HTTP_USER_AGENT'} =~ /DoCoMo/i		||
		$ENV{'HTTP_USER_AGENT'} =~ /KDDI/i			||
		$ENV{'HTTP_USER_AGENT'} =~ /Vodafone/i		||
		$ENV{'HTTP_USER_AGENT'} =~ /jig browser/i	||
		$ENV{'HTTP_USER_AGENT'} =~ /J-PHONE/i) { 

		$form{keitai} = 1;
		$plugin_context->{keitai} = 1;
	}

}
---)

- decode関数
- code_convert関数

----- 2007-11-07 (Wed) 11:59:32 &verb( ''checker hjd773ch'' : ) &link(checker hjd773ch,http://checker.com/index.html)
--checker hjd773ch
- 2007-11-07 (Wed) 12:00:14 &verb( ''checker hjd773ch'' : ) &link(checker hjd773ch,http://checker.com/index.html)
--checker hjd773ch
- 2007-11-27 (Tue) 00:57:31 &verb( ''Greetings {code} !!! yes'' : ) &link(Greetings {code} !!! yes,http://tester.com/{code})
--Greetings dear blog owner {code} may not be reproduced without written permission.

[[#trackback]]
-----

先頭へ